STA学习记录-时钟定义

STA学习记录-generated clock STA学习记录 阅读详情


STA的准备工作包括:设定时钟、指定IO时序特性、指定false path和multicycle path

1 什么是STA环境

看下面这张图,假定Design Under Analysis(DUA)会与其他同步设计交互,这意味着DUA会从前一级触发器接收数据,并将数据发送到DUA后一级触发器

为了对这种设计执行STA,需要指定触发器的时钟、进入DUA和退出DUA的所有路径上的时序约束

2 指定时钟

定义时钟时需要提供以下信息:

  • Clock source:可以是design的port,也可以是design内部的pin

  • Period:时钟周期

  • Duty cycle:高电平持续时间和低电平持续时间

  • Edge time:上升沿和下降沿出现的时刻

通过时钟定义,所有内部的timing path都将受到约束,表明所有的internal path都可以用时钟路径来分析

下面是一个基本的时钟定义:

create_clock \
 -name SYSCLK \
 -period 20 \
 -waveform {0 5} \
 [get_ports SCLK]

在这个例子中,定义的时钟名称为SYSCLK,并且指定定义的时钟是在端口 SCLK上定义的

SYSCLK的时钟周期时20(如果没有明确指定时间的单位,默认是ns)

在-waveform中,第一个变量是上升沿出现的时刻,第二个变量是下降沿出现的时刻,因此在这个例子中,上升沿出现在0ns,下降沿出现在5ns

这个例子对应的波形图如下

-waveform中可以指定任意数量的边沿,但是所有的边沿必须在一个周期之内

边沿时刻从0时刻之后的第一个上升沿开始,然后依次是下降沿、上升沿、下降沿……

-waveform {time_rise time_fall time_rise time_fall ...}

在-waveform中需要指定偶数个边沿,并且-waveform指定的是一个周期内的波形,在后续周期中不断重复

如果没有指定-waveform,默认是

-waveform {0, period/2}

下面看一个不使用-waveform选项的时钟定义

create_clock -period 5 [get_ports SCAN_CLK]

其对应的波形图如下:

在这个例子中,由于没有指定-name,因此定义时钟名称与端口名称相同

再来看另一个例子

 create_clock -name BDYCLK \
 -period 15 \
 -waveform {5 12} \
 [get_ports GBLCLK]

其对应的波形图如下:

在这个例子中,根据-waveform可以知道,第一个上升沿出现在5ns,第一下降沿出现在12ns

因为选项-waveform给出的上升沿和下降沿时刻会在每个cycle里重复,又因为-period指定周期是15ns,

所以在第二个cycle中,上升沿应该出现在15+5=20ns处

下降沿出现在15+12=27ns处

再来看另外两个例子:

 # Figure (a)
 create_clock  -period 10 \ 
 -waveform {5 10} \
 [get_ports FCLK]
 ​
 #Figure (b)
 create_clock -period 125 \
 -waveform {100 150} \
 [get_ports ARMCLK]

对应的波形图如下:

对于图(a),周期为10ns,上升沿出现在5ns,下降沿出现在10ns

在第二个cycle中,上升沿出现在10+5=15ns,下降沿出现在10+10=20ns

对于图(b),周期为125ns,从选项-waveform {100 150}可以知道,上升沿出现在100ns处,并且 high duration = 150-100=50ns,那么low duration = period - high duration,即low duration = 75ns

因为150ns的时刻已经超出了第一个cycle的时间范围,并且low duration的时长小于上升沿出现的时刻,那么可以推断出 在第一个cycle中有一个下降沿,这个下降沿出现的时刻可以用100 - low duration得到(100 - 75 = 25ns)

出现这种情况的原因是:选项-waveform要从上升沿开始

根据下面的例子,再次理解一下选项-waveform

 #Figure (a)
 create_clock -period 1.0 \
 -waveform {0.5 1.375} \
 [get_ports MAIN_CLK]
 ​
 #Figure (b)
 create_clock -period 1.2 \
 -waveform {0.3 0.4 0.8 1.0} \
 [get_ports JTAG_CLK]

对应的波形图如下:

在这个例子中,图(a)的分析方式与上一个例子相同

图(b)由于选项-waveform中给出的上升沿和下降沿时刻都在第一个cycle时间范围内,因此不需要进行额外的推断

在某些情况下,比如在顶层的输入端口或某些PLL的输出端口,工具无法自动计算出过渡时间,此时在clock source出显示指定过渡时间很有用,可以使用set_clock_transition来指定

set_clock_transition -rise 0.1 [get_clocks CLK_CONFIG]

set_clock_transition -fall 0.12 [get_clocks CLK_CONFIG]

# 这个约束仅适用于ideal clocks,一旦构建了时钟树就将其忽略

3 时钟不确定度

可以用set_clock_uncertainty来指定时钟周期的timing uncertainty,用不确定度来建模那些会降低有效时钟周期的因素

set_clock_uncertainty -setup 0.2 [get_clocks CLK_CONFIG]

set_clock_uncertainty -hold 0.05 [get_clocks CLK_CONFIG]

setup check会减少可用的有效时钟周期

对于hold check,clock uncertainty被用作需要满足的额外时序裕量

这里我的理解是,由于clock uncertainty的存在,减小了有效的时钟周期,并且在clock uncertainty范围内,我们无法预测clock是否有效,为了保证数据的正确性,在进行数据传输时,应当避开clock uncertainty的范围

下面几个command可以用来指定跨时钟边界path上的clock uncertainty,被称为 inter-clock uncertainty

set_clock_uncertainty -from VIRTUAL-SYS_CLK -to SYSCLK -hold 0.05

set_clock_uncertainty -from VIRTUAL-SYS_CLK -to SYSCLK -setup 0.3

set_clock_uncertainty -from SYS_CLK -to CFG_CLK -hold 0.05

set_clock_uncertainty -from SYS_CLK -to CFG_CLK -setup 0.1

从图中可以看到,该电路为两个不同的clock domain SYS_CLK和CFG_CLK之间的path,根据上面约束可知,setup check的uncertainty是100ps,hold check的uncertainty是50ps

4 时钟延迟

可以使用set_clock_latency来指定时钟的延迟,用法如下:

set_clock_latency 1.8 -rise [get_clocks MAIN_CLK]
# MIN_CLK的上升沿延迟是1.8ns
set_clock_latency 2.1 -fall [all_clocks]
# 所有时钟的下降沿延迟是2.1ns

# -rise和-fall指的是 时钟在DFF的clock pin上的延迟

时钟延迟有两种:network latency和source latency

  • network latency:从时钟定义点(creat_clock)到DFF的clock pin上的延迟

  • source latency:指的是从时钟源到时钟定义点的延迟

下图直观的展示了这两个延迟类型的位置

以下是一些指定源延迟和网络延迟的示例

# 没有给出 -source 选项,表明是 network latency
# 没有给出 -fall和-rise选项,表明fall和rise是相同的
# 没有给出 -min和-max选项,表明min和max是相同的

set_clock_latency 0.8 [get_clocks CLK_CONFIG]

set_clock_latency 1.9 -source [get_clocks SYS_CLK]

set_clock_latency 0.851 -source -min [get_clocks CFG_CLK]

set_clock_latency 1.322 -source -max [get_clocks CFG_CLK]

一个重要的区别:

当clock tree建立后,network latency可以忽略,source latency不可以忽略

这是因为network latency的作用是在clock tree综合之前用来估算clock tree上的latency,当clock tree综合之后,我们可以计算出clock tree上的实际的latency,因此不在需要network latency

当clock tree综合后,总的clock latency = source latency + clock tree上的实际latency

参考

Static Timing Analysis for Nanometer Designs: A Practical Approach

STA基础知识(二)时钟特性 时钟的时序特性主要分为时钟延迟(clock latency)、时钟偏斜(clock skew)和时钟抖动(clock jitter)。 1、时钟延迟(clock latency) 时钟延迟是指时钟信号从时钟源输出端口到达时序单元时钟输入端口所需要的传播时间,如图所示。 由于OCV(片上工艺偏差,On-Chip Variation)和PVT(process... 阅读详情

相关推荐

静态时序分析(STA)学习记录

没事看看文档总是可以学到很多新东西,提炼精华,方便复习。

qq_40113966的博客 569

Chapter 8 Other Clock Characteristics

如果设计者想针对不同的上升沿和下降沿分别建立不确定度,则可利用-rise_from、-fall_from、-rise_to、-fall_to这些选项.在这些选项之前用户可利用-rise和-fall进行设定。建立要包括两个时钟的抖动和偏斜。不像内部时钟,这种情况中两个时钟的抖动和偏斜都需要考虑保持,因为发射和捕获时钟都有自己的偏斜和抖动。**时钟偏斜存在于相同时钟(内部时钟)或不同(通常是同步的)时钟(交互时钟)之间的不同点上。-rise选项用于提供时钟上升沿的过渡时间,-fall用于提供下降沿的过渡时间。

面朝大海 1254

数字芯片STA时钟约束:从基础命令到高级场景实战指南

静态时序分析(STA)是数字芯片后端设计的核心环节,用于验证电路在特定频率下的时序正确性。其原理是通过分析所有可能路径的时序,确保信号在时钟边沿到来前稳定建立,并在之后保持足够时间。这项技术的核心价值在于无需动态仿真即可全面评估时序性能,显著提升验证效率与芯片可靠性。在工程实践中,时钟约束是STA的基石,它定义了时钟网络的时序特性,直接影响建立时间与保持时间的分析精度。应用场景涵盖从高性能处理器到低功耗物联网芯片的各类设计,尤其在处理高速接口时序收敛和低功耗时钟门控时至关重要。本文聚焦于时钟约束的实战应用,

474

【Time7】时钟组约束

定义 Clock Groups是将若干时钟放到1个组内,工具不会去分析不同的时钟组之间的时序路径。 如果要设置两个时钟之间的路径不分析,可以使用set_false_path约束。 如果要设置多个时钟之间的路径不分析,可以使用set_clock_groups约束。 -group增加时钟 时钟组至少要存在两个非空时钟组。如果只有一个时钟组将会报错。 时钟分类 synchronous:相位可预测,时钟源头是同一个。 asynchronous:相位不可预测,时钟源头不是同一个。 unexpandable

1615549892 3233

STA-静态时序分析学习记录-1

静态时序分析

I_learn_code的博客 1201

静态时序分析—时钟延时(Clock Latency)

静态时序分析(STA)—时钟延时(Clock Latency)

m0_61544122的博客 6586

浅聊数字后端中的 时钟延迟(clock_latency)

首先 1.时钟延迟的组成部分? 2.如何定义时钟延迟? 1.时钟延迟是由 时钟源延迟(source_latency) 和时钟网络延迟(network_latency) 两个部分组成。 如下图所示。 ①表示 时钟源延迟 ,指的是从 时钟源点 到 clk定义点 之间的延迟。这段延迟,自始至终都存在。 ②表示 时钟网络延迟,指的是从 clk定义点 到 时序单元的时钟输入端 的延迟。要注意的事,和时钟源延迟不一样。这一段延迟的设置并不是自始至终都存在的! 它是在clock tree没做之

weixin_51185045的博客 7059

Visual Studio报错TRK0005找不到CL.exe?三步彻底解决环境变量问题

本文详细解析了Visual Studio报错TRK0005找不到CL.exe的根本原因,并提供了三步彻底解决环境变量问题的方案。从验证安装完整性到配置永久环境变量,再到注册表级修复,帮助开发者建立健壮的开发环境配置体系,确保编译链稳定运行。

weixin_30839881的博客 459

时钟特性

时钟的时序特性主要分为:时钟周期(clock period)、始终占空比(clock duty cycle)、时钟转换时间(clock transition time)、时钟延迟(clock latency)、时钟偏斜(clock skew)、时钟抖动(clock jetter) 时钟转换时间之前的文章有介绍 时钟延迟-时钟信号从时钟源端口到达时序单元时钟输入端口所需的传播时间 时钟偏斜:非理想情况下,由于时钟线长度以及时钟树叶节点负载不同等因素,导致时钟信号到达同意时序路径下的相邻两个时序单元的时钟端口.

qq_42826448的博客 4941

从宁德新能源面试官视角,拆解Halcon/OpenCV图像处理工程师的硬核技能树(附避坑指南)

本文从宁德新能源面试官视角出发,详细拆解Halcon/OpenCV图像处理工程师的核心技能树,涵盖硬件选型、算法实现和系统工程思维三大能力维度。文章提供工业视觉工程师面试的实战避坑指南,包括硬件配置要点、算法优化技巧及职业发展路径,助力求职者系统提升图像处理专业技能。

weixin_28732953的博客 129

[LaTeX] 使用natbib宏包实现参考文献的“作者-年份”引用格式及常见编译错误排查

本文详细介绍了在LaTeX中使用natbib宏包实现参考文献“作者-年份”引用格式的完整流程。从宏包配置、.bib文件准备到标准编译步骤,重点解析了常见的“Bibliography not compatible with author-year”错误成因,并提供了彻底清理辅助文件等解决方案,帮助用户高效排版符合学术规范的参考文献。

moon9的博客 481

【STA】常用约束指令学习记录

STA常用约束指令学习记录

wjh776a68的博客 1912

从原理图到GDSII:Virtuoso+Pcell实战避坑指南(以TSMC65nm振荡器为例)

本文以TSMC65nm工艺下的振荡器设计为例,详细解析了Virtuoso环境中Pcell的最佳实践方案,涵盖变量管理、版图设计、Calibre验证等关键环节。通过实战案例和避坑指南,帮助工程师高效完成从原理图到GDSII的转化,特别针对LVS验证和参数化单元设计提供了实用解决方案。

fff88的博客 900

STA学习记录(一)

《Static Timing Analysis for Nanometer Design: A Practical Approach》学习过程

weixin_40642999的博客 865

29、网络支持技术:CDN、覆盖网络与无标度网络解析

本文详细解析了CDN路由方式与性能指标,探讨了覆盖网络与无标度网络的特性及其在云计算和现代网络中的应用。文章分析了CDN的关键技术与挑战,介绍了覆盖网络与小世界网络的基本原理,并深入讨论了无标度网络的构建算法、性能优化策略以及在多个领域的应用案例。最后,文章展望了未来网络技术发展趋势与无标度网络的结合潜力。

night的博客 91

华为 MetaERP 总账模块依托 “交易即核算” 的事件驱动架构,与 Oracle EBS 相比,更强调业务事件自动触发财务动作、实时数据同步和智能规则引擎,实现业务与财务的深度融合

华为MetaERP总账模块采用"交易即核算"架构,相比Oracle EBS实现了三大突破:1)业务事件自动触发财务动作,如采购收货自动生成暂估凭证;2)业务财务数据实时同步,支持即时分析;3)内置智能规则引擎,实现自动匹配、核销和结转。该模块覆盖采购、销售、资产、薪酬等全业务场景,支持多维核算和关联交易自动抵消,显著提升核算效率与准确性。其中采购暂估、销售结转等场景实现全自动化处理,较EBS减少80%手工操作。

金牌架构师 225

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

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

wjh776a68的博客 1397

CMake入门教程【基础篇】CMake+Visual Studio2022构建C++项目

CMake+Visual Studio2022搭建C++环境

小鱼酱的博客 4971

DC综合时序约束及优化学习记录(一)

STA与时序约束学习

weixin_72661375的博客 1450

音视频开发基础(1):模拟视频技术简介

模拟视频技术是指用模拟技术对动态影像进行捕捉、记来、处理、存储、传输、复现的技术.模拟视频技术的发明、发展与模拟电视系统的发展密不可分.下面将通过模拟电视系统来介绍模拟视频技术中的基本概念. 首先,人的视觉系统的特征为电视等視稿系铳的发明、发展提供了理论依据.光线通过角膜、腫孔、晶状体的折射光线.透过玻璃体到达视网展.视网膜上分布着光感受器,光感受器在光线的剌激下...

琅嬛福地 1493

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数字IC笔面基础,辨别有无入门的利器——STA相关知识点(静态时序分析)

静态时序分析(Static Timing Analysis),缩写为STA。是对数字IC电路的检查验证,注意,这里不是检查电路的功能。而是检查所有时序路径是否满足,就是检查所有触发器是否满足建立时间和保持时间。静态指的是,没有输入激励,只是对所有时序路径进行检查,分析速度快。由于静态时序分析是对时序路径进行检查,在数字IC设计流程中,从综合开始,直到布局布线结束,每对实际的电路和器件进行修改,都需要重新跑一次静态时序分析,确保电路在时序上是正确的。

HFUT90S的博客 3143

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

静态时序分析简明教程(六)]时钟组与其他时钟特性

在第二章中,我们讨论了一个复杂的电路设计不可能只存在一个时钟域,面对不可避免地多时钟域问题,我们采用**时钟组**的方式来描述不同时钟之间的关系。 而在第三章中,我们使用SDC命令去约束和描述那些非理想的时钟特性,如过渡时间、偏移、抖动、延迟等。 虽然说在布局布线完成后,他们的数值或者形态会发生改变,但这些约束依旧值得学习,因为他们在整个芯片设计的前面阶段为我们提供了重要的参考。

weixin_43698385的博客 5462

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

vivado跨时钟域时序违例解决方法记录

摘要:本文记录了AD1675驱动开发中遇到的时序违例问题及解决方法。在布局布线后发现跨时钟域(SCLK与clk_100M)出现建立时间违例,通过添加伪路径(false path)约束解决了误报问题。作者强调伪路径仅用于指导工具优化,实际必须配合双寄存器同步或异步FIFO等同步机制才能确保电路可靠性。文章指出合理使用伪路径能减少工具优化时间,避免对非关键路径进行不必要的时序优化。最后分享了FPGA开发中解决问题的思考过程,并邀请同行交流学习。

在读研究生,FPGA电路设计与功能开发。 3176

时钟周期约束(三)

时钟周期约束要点摘要 主时钟:定义FPGA首级时钟源(引脚/GT输出),需约束周期/占空比,差分时钟仅约束P端。 生成时钟:MMCM/PLL自动推导;用户逻辑分频需用-source指向主时钟源,随路时钟需匹配延迟路径。 多时钟模式:同一端口多时钟需加-add,互斥时钟用-physically_exclusive声明。 时钟特性:设置输入抖动、不确定性参数以优化时序,跨时钟域可单独加压。 验证脚本:通过report_clocks等命令检查时钟网络、属性及交互关系,确保约束完整性。 (摘要字数:149字)

Qqyangleiyu的博客 1143

【STA】SRAM / DDR SDRAM 接口时序约束学习记录

本文是对SRAM / DDR SDRAM 接口时序约束的学习记录

wjh776a68的博客 3096

数字IC前端设计入门基础(1)之静态时序分析-STA

上一篇简单描述了时序逻辑与组合逻辑电路的区别、建模,其中提到了时序逻辑电路是由时钟驱动的,那么时钟根据不同的相位关系可以分为同步时钟和异步时钟,工作在同步时钟的电路称为同步电路,工作在异步时钟的电路称为异步电路。

baidu_38588146的博客 2230
上一篇: STA-静态时序分析学习记录-1
下一篇: STA学习记录-generated clock
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值