搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
喵喵爱编程
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
CentOS安装MySQL
2
.NET Framework 开发自定义 Windows 控件_将windows窗体改为自定义控件
3
2023全国特种作业操作证熔化焊接与热切割模拟考试试卷一[安考星]_焊接与热切割作业模拟考试题库下载
4
2024年最新的Stable Diffusion整合包安装(附安装包)_stable diffusion整合包下载
5
虚拟机类加载机制
6
搭建向量数据库【动手学大模型应用开发Task3】_向量数据库搭建
7
pytorch中tensorboard使用_vscode pytorch tensorboard
8
Excel的Index+MATCH组合使用方法_index match多结果查询
9
【陈老板赠书活动 - 28期】- 客户成功体系与实践:让ToB和SaaS企业高效增长
10
CentOS 停止维护,来看看国产操作系统中有哪些顶流!
当前位置:
article
> 正文
STA中的multi_cycle 和false_path详细讨论_sta multi cycle
作者:喵喵爱编程 | 2024-08-20 12:43:13
赞
踩
sta multi cycle
前提概念:什么是数据路径?clk路径?require_time ? arrive_time?slack_time?不做赘述
1、为什么要对某些路径设置multi_cycles:
在某些情况下,两个触发器之间的数据路径可能需要一个以上的时钟周期才能传播通过逻辑。在这种情况下,这条组合逻辑路 径会被定义为多周期路径(multicycle path
)。虽然数据还是会在每个时钟沿上都被捕获触发器捕获,但我们需要告知
STA
在指定数量的时钟周期之后才会出现
有效
的捕获时钟沿。
数据路径最多需要三个时钟周期,因此应指定三个周期的多周期建立时间检查,多周期建立时间约束:
create_clock -name CLKM -period 10 [get_ports CLKM]
set_multicycle_path 3 -setup -from [get_pins UFF0/Q] -to [get_pins UFF1/D]
多周期路径上的保持时间检查。在最常见的情况下,我们希望保持时间检查保持不变(与单周期路径一 致),
这样可使数据在三个时钟周期之内任意进行改变。只有指定多周期保持时间为3-1=
2
,才可以获得与单周期建立时间检查情况相同的保持时间检查。这是因为在没有这样的多周期保持时间约束的情况下,默认的保持时间检查是在建立时间捕获沿的前一个有效时钟沿上执行的,这显然不是我们希望的。我们需要将执行保持时间检查的时钟沿移动到默认保持时间检查时钟沿之前的两个周期,因此指定了多周期保持时间为
2
。通过多周期保持时间约束,数据路径的最小延迟可以小于一个时钟周期:
set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]
假如不设置多周期保持时间约束:
在捕获沿之前的一个时钟沿对保持时间进行了检查(默认状态),这导致了较大的保持时间违例。实际上,该保持时间检查将要求组合逻辑中的最小延迟至少为两个时钟周期。
2、为什么要设置false_path?
当设计的功能运行时,某些时序路径可能不真实(或不可能)存在或者功能对其时序不在乎,在执行
STA
时可以将这些路径设置为伪路径(
false path),这样就可以关闭这些路径,那么
STA
就不会对这些伪路径去进行分析了。
伪路径可能是从一个时钟域到另一个时钟域、从触发器的时钟引脚到另一触发器的输入引脚、通过一个单元的引脚、通过多个单元的引脚或这些情况的组合 。当通过单元的引脚指定了伪路径后,通过该引脚的所有路径都将被忽略,无需进行时序分析。
辨别出伪路径的好处在于减少了分析空间,从而使分析可以专注于真实存在的路径,这同样有助于减少分析时间。但是,过多使用-through选项去指定伪路径同样会降低分析的速度。
set_false_path -from [get_clocks SCAN_CLK] -to [get_clocks CORE_CLK]
set_false_path -through [get_pins UMUX0/S]
set_false_path -through [get_pins SAD_CORE/RSTN]
set_false_path -to [get_ports TEST_REG*]
set_false_path -through UINV/Z -through UAND0/Z
要在两个时钟域之间设置伪路径,请使用:
set_false_path -from [get_clocks clockA] -to [get_clocks clockB]
而不要使用:
set_false_path -from [get_pins {regA_ * }/CK] -to [get_pins {regB_ * }/D]
后者这种方式要慢得多。
另一个建议是尽可能少使用
-through
选项,因为它增加了运行时不必要的复杂性。仅在绝对有必要且没有替代方法可以指定该伪路径的情况下,才可以使用-through
选项。
从优化的角度来看,还有一个建议是不要将一条多周期路径约束为伪路径。如果需要在已知或可预测的时刻对信号进行采样,则无论时间间隔多大,都应使用多周期路径约束,以使路径具有一定的约束条件并进行优化以满足多周期约束。如果把一条许多时钟周期后进行采样的路径指定为了伪路径,则对设计中其余逻辑路径的优化可能会使该路径变长,甚至超出所需的时间。
注意:建立时间检查和保持时间检查是针对同一工艺角(
corner
)。在最坏情况的慢速工艺角
下wc_corner,建立时间检查最难满足(裕量最小),而在最佳情况的快速工艺角下best_corner,保持时间检查最难满足(裕量最小)。一般pr后netlist,setup容易满足,即修干净,但是hold 不容易修的很干净,没有完全clean,所以在chip_TO前后,时间紧迫情况下,post_sim优先sim_bc_corner的sdf。
半周期:half_cycle
设计中同时具有负边沿触发的触发器和正边沿触发的触发器,则设计中可能存在半周期路径(half-cycle path
)。半周期路径可能是从一个触发器的上升沿到另一个触发器的下降沿,或者反过来。
这样会导致setup_check加严,只有半个周期,hold_check放松,放宽了半个周期。
所以在设计中可以采用负电平有效(即hold值,锁存值)的latch_up_cell来向下一级寄存器借一部分时间,来改善hlod的vialition。
应用场景:
例如:1、在串chain的过程中,由于option设置,两条不同clk的 chain的末端会存在跨时钟域的问题,如果两个clk_skew很大或者很小,导致Tdata会比Tclk_skew小,导致hold_via发生,下一级寄存器会拿到当拍的值,而不是上一拍的值。所以可以采用latch_up_cell的锁存特性来修复。前提是clk2的延迟不能太大,不能超过clk1的高电平时间范围,就可以用latch-up_cell修复。
2、ip-chain的集成过程中,会存在一条chain上有正负延寄存器,此时也需要用它来修复。
特殊路径:
跨时钟域
下的exception_path:分为多种情况优先
1、不同clk_domain ,但频率相同
create_clock -name CLKM -period 10 -waveform {0 5} [get_ports CLKM]
create_clock -name CLKP -period 10 -waveform {0 5} [get_ports CLKP]
set_multicycle_path 2 -from [get_pins UFF0/CK] -to [get_pins UFF3/D]
默认为
-setup
选项。以上约束指定多周期建立时间为
2
且多周期保持时间为
0(默认值),会有hold的违例,若要消除,则设置hold的multi_cycle:
set_multicycle_path 2 -from [get_pins UFF0/CK] -to [get_pins UFF3/D] -setup
set_multicycle_path 1 -from [get_pins UFF0/CK] -to [get_pins UFF3/D] -hold
2.从slow_clk 到fast_clk:
create_clock -name CLKM -period 20 -waveform {0 10} [get_ports CLKM]
create_clock -name CLKP -period 5 -waveform {0 2.5} [get_ports CLKP]
当数据发起触发器和捕获触发器的时钟频率不同时,
STA
会首先确定一个公共基本周期(
common base period)。
假设该设计的目的不是在
CLKP
的下一个有效沿上就捕获数据,而是在每第4
个捕获沿上捕获数据。该假设给触发器之间的组合逻辑路径提供了
4
个
CLKP
周期的时间,即
20ns
。
我们可以通过设置以下多周期路径约束来做到这一点:
set_multicycle_path 4 -setup -from [get_clocks CLKM] -to [get_clocks CLKP] -end
在大多数设计中,这不是理想的时序检查,应将保持时间检查一直移回到数据发起沿所在位置。因此,我们可以约束多周期保持时间为3
。
set_multicycle_path 3 -hold -from [get_clocks CLKM] -to [get_clocks CLKP] -end
-end
选项意味着我们想将终点(或捕获边沿)移回指定的周期数,即捕获时钟的周期
数。代替
-end
的另一种选项
-start
指定了要移动的发起时钟周期数,
-end
选项指定了要移动的捕获时钟周期数。
-end
是多周期建立时间约束的默认值,-start
是多周期保持时间约束的默认值。
所以对于慢速到快速时钟域之间 的路径,多周期路径约束的一个好经验是使用-end
选项。使用此选项,可以根
据快速时钟的时钟周期
来调整建立时间(往前走)和保持时间检检查(往后走)。
2、
fast_clk到slow_clk:
create_clock -name CLKM -period 20 -waveform {0 10} [get_ports CLKM]
create_clock -name CLKP -period 5 -waveform {0 2.5} [get_ports CLKP]
setup_4是最严格的检查,通常,设计人员可以将从快时钟域到慢时钟域的数据路径指定为多周期路径。如果想要放宽建立时间检查,比如为数据路径提供两个快时钟周期,则此多周期路径约束如下:
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
约束多周期建立时间为2
会将发起沿移动到默认发起沿之前的一个时钟沿,即在
10ns
而不是
默认的
15ns
处。多周期保持时间约束确保了在
0ns
处发起沿发起的数据,不会被
0ns
处的捕获沿捕获到。
与从慢速时钟域到快速时钟域的路径不同,在从快速时钟域到慢速时钟域的路径中,多周期路径约束的一个好经验是使用
-start选项,然后再根据快速时钟调整建立时间和保持时间检查。
注意:建立时间检查和保持时间检查的示例报告是针对同一工艺角(
corner
)的。通常,在最坏情况的慢速工艺角下,建立时间检查最难满足(裕量最小),而在最佳情况的快速工艺角下,保持时间检查最难满足(裕量最小)。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/喵喵爱编程/article/detail/1007232
推荐阅读
article
【
Jetpack
】学穿:
ViewBinding
→ 视图绑定_
viewbinding
{ enabl...
ViewGroup子类才能使用视图绑定,View子类不可使用,示例如下:binding.tvLayout.text = ...
赞
踩
article
从
g
it
lab
拉代码报错
it
-c core.quotepath=
false
-c log.show...
当使用G
it
进行代码拉取时,由于配置了多个
g
it
lab
账号导致报错。为了解决这个问题,可以尝试从凭据管理器中删除相关凭证...
赞
踩
article
基于
transformer
的多帧自监督
深度
估计
Multi
-
Frame
Self-Supervise...
多帧
深度
估计
除了学习基于外观的特征外,也通过特征匹配利用图像之间的几何关系来改善单帧
估计
。我们采用
深度
离散的核极抽样来选...
赞
踩
article
openfeign
微
服务
调用_
openfeign
context
-
path
...
本文详细介绍了如何使用OpenFeign在Java Spring环境下进行微
服务
间的调用,从前提条件到具体步骤,包括六个...
赞
踩
article
python
的初讲_
disable
path
long
limit...
0.Python起源与发展Python的创始人为吉多*范罗苏姆(Gudio van Rossum)1.1989年的圣诞节...
赞
踩
article
Component
name
“XXX“ should always be
multi
-
word
,关...
在使用
eslint
的时候,但是用单个单词时会出现
文件名
校验的错误,其实组件名是可以使用单个单词的,只是官方文档建议我们使...
赞
踩
article
【论文笔记】
Diffusion
Track:
Diffusion
Model
For
Multi
-Ob...
【论文笔记】
Diffusion
Track:
Diffusion
Model
For
Multi
-
Object
Track...
赞
踩
article
【MatLab学习笔记】大型实例
Highway
Trajectory
Planning
Using
...
本文介绍了使用MATLAB进行高速公路轨迹规划的方法,具体包括加载驾驶环境、创建参考路径、轨迹生成器、动态碰撞检测器的创...
赞
踩
article
【
论文
阅读】MEND-
ABSA
:一个用于基于方面的情感
分析
的多元素多领域
数据
集_
memd
-
absa
:...
【
论文
阅读】MEND-
ABSA
:一个用于基于方面的情感
分析
的多元素多领域
数据
集_
memd
-
absa
: a
multi
-e...
赞
踩
article
LLM
构建
Data
Multi
-
Agents
赋能
数据
分析
平台
的
实践之②:
数据
治理之二(自动处理)...
1、提示词设计:设计一个总结报告
的
基础框架,包含目
的
、背景、过程、结论、建议等。"""2、Agent
的
构建
| promp...
赞
踩
article
LLM
构建
Data
Multi
-
Agents
赋能
数据
分析
平台的实践之④:
数据
分析
之三(
数据
展示)...
整个系统的设计应该注重用户体验,确保即使非编程背景的用户也能轻松使用。同时,安全性、性能和可扩展性也应作为优先考虑的因素...
赞
踩
article
neo4j
路径
发现
算法
(
Path
finding
algorithm
s)-3.The Single ...
一.介绍: 单源最短
路径
算法
: 给定带权
有向图
G=(V,E),其中每条边的权都是非负数。给定一个起始顶点,成为源。...
赞
踩
article
neo4j
常用
cypher
笔记(1)_
apoc
.
path
.
expandconfig
...
1.
apoc
.
path
.expandConfig简单语法match (n) where id(n)=1call apo...
赞
踩
article
Neo4j
图
数据库
高级应用系列 / 服务器扩展指南 (3.3) - 搜索
子
图
_
apoc
path
e...
本文介绍了
Neo4j
中利用APOC库的subgraphNodes()和subgraphAll()进行搜索
子
图
操作,这两种...
赞
踩
article
neo4j
路径
发现算法(
Path
finding algorithm
s
)-6.The Yen’
s
K...
一.介绍: k条最短
路径
算法(KSP):通常情况下,最短
路径
问题分为:单源最短
路径
和所有顶点对之间的最短
路径
,但两个都...
赞
踩
article
Neo4j
图
数据库
高级应用系列 / 服务器
扩展
指南 (3.1) - 基本路径
扩展
过程
_
apoc
.pa...
本文介绍了
Neo4j
图
数据库
中的路径
扩展
过程
,包括其定义、应用优势、
过程
接口以及通过APOC库进行
扩展
操作的方法。通过示...
赞
踩
article
kafka
的
副本
管理_ignoring stopreplica
request
(
delete
=fa...
本文深入探讨了Kafka的
副本
机制,如何通过
副本
实现高可靠性。关键点包括:
副本
分布、LEO与HW的定义、ISR列表、Re...
赞
踩
article
AI推介-多模态视觉
语言
模型
VLMs论文速览(arXiv方向):2024.07.20-2024.07...
山水画的创作拓展了艺术创造力和想象力的可能性。传统的山水画方法是在宣纸上使用水墨或彩墨,这需要大量的时间和精力。这些方法...
赞
踩
article
“
万物
皆可
Seq2Seq
” | 忠于原文
的
T5
手写论文翻译_“
万物
皆可
seq2seq
” | 使用 b...
本文提出将所有文本处理问题视为文本到文本问题,通过
T5
模型进行预训练和微调,实现在多个NLP任务中
的
最顶性能。研究对比了...
赞
踩
article
人工智能 |
ShowMeAI
资讯日报 #2022.06.10_
real
-iad: a
real
-w...
ShowMeAI
资讯日报 2022-06-10 期,AI领域【工具&框架】【项目&代码】【博文&分享】【数据&资源】【研...
赞
踩
相关标签
鸿蒙
面试
学习
gitlab
transformer
深度学习
人工智能
java
spring
python
vue
前端
论文阅读
计算机视觉
自动驾驶
目标检测
matlab
笔记
算法
数据分析
big data
信息可视化
数据挖掘