当前位置:网站首页>sdc中对cdc的处理方式
sdc中对cdc的处理方式
2022-07-26 05:35:00 【硅农阿轩】
最近在看S家某IP关于CDC处理的SDC约束中,看到了一些有用的知识点和SDC约束,这里做一下总结。
1.通常的认识中,我们期望综合工具不要去检查和优化异步时钟之间的时序路径,所以只在sdc中将其设置为async,例如,当clk_a和clk_b为异步时钟时,可以把进行如下设置:
set_clock_groups -asynchronous -group clk_a -group clk_b
但在实际的项目中,还需要对异步时钟路径加一些特殊约束。其中set_max_delay和set_min_delay是比较常用的做法,set_max_delay会用于目的寄存器(destination flop)的setup check,set_min_delay会用于目的寄存器(destination flop)的hold check。set_max/min_delay需要加上-ignore_clock_latency开关,保证在计算异步时钟路径的delay时,不考虑clock tree latency(只会在CTS之后存在)
2.为了使set_max/min_delay生效,需要注意以下两点:
1)设置set_max/min_delay的路径,不能加set_false_path,因为此设置的优先级更高
2)异步时钟之间不能像前面给的例子中,只设置async,而应该加入-allow_paths,完整命令如下:
set_clock_groups -asynchronous -allow_paths -group clk_a -group clk_b
以下是Synopsys Synthesis Commands中关于该选项的解释
-allow_paths
Enable the timing analysis between specified clock groups. If this option is not specified, the timing analysis among the defined clock groups are disabled. This option can be used with asynchronous clock groups only.
3.当异步时钟域之间传递格雷码数据,且目的时钟域用两级同步器(寄存器)采样数据时,应该set_max_delay为一个源时钟周期,set_min_delay为0。这样可以保证目的时钟域只会采样到格雷码。
4.当异步时钟域之间传递Qualifier-based Data Bus Signal时,应该set_max_delay为(同步级数-0.5)*目的时钟周期,set_min_delay为0。这样可以保证目的时钟域只会采样到稳定的数据。
5.除3.4.中提到的两种数据外,其他的CDC路径应set_max_delay为一个目的时钟周期,set_min_delay为0。相关文档中解释此举的目的是(目前不太理解)
maintain the assumptions for a safe CDC implementation
6.某些准静态数据,例如上电后进行配置且之后不会变化的寄存器,可以认为是纯异步路径,可以set_false_path
7.异步FIFO中,可能会使用一些standard cell以保证关联路径的时序,我们不希望这些cell被综合工具进行逻辑优化,因而需要在sdc中加入set_size_only约束,以下是Synopsys Synthesis Commands中关于该命令的解释
When the set_size_only command is issued with the true value on a cell, optimization of that part is treated specially. In general, this command directs synthesis to perform only a sizing operation on a cell. The set_size_only command can be used only on leaf cell instances.
边栏推荐
猜你喜欢

520 for what? DIY is a high-value RGB clock that girls want to watch

Basic methods of realizing licensing function in C language

Princeton calculus reader 02 Chapter 1 -- composition of functions, odd and even functions, function images

Development to testing: a six-year road to automation from scratch

真正的科学减肥

Lesson 2 getting to know slam for the first time

数仓搭建-DIM层

Data warehouse construction -dim floor

Okaleido上线聚变Mining模式,OKA通证当下产出的唯一方式

Redis official visualization tool, with high appearance value and powerful functions!
随机推荐
Unity Profiler
Who is responsible for the problems of virtual idol endorsement products? And listen to the lawyer's analysis
这种项目,最好别接!
High frequency electronic circuit review examination questions and answers
Development projects get twice the result with half the effort, a large collection of open source STM32 driver Libraries
Getaverse, a distant bridge to Web3
Basic methods of realizing licensing function in C language
You'd better not take this kind of project!
Okaleido launched the fusion mining mode, which is the only way for Oka to verify the current output
The first positive number missing in question 41 of C language. Two methods, preprocessing, fast sorting and in situ hashing
Dynamic memory management and flexible array
87. 扰乱字符串
高效,可靠,安全的串口通讯开源方案
电机控制专栏文章汇总
C language explanation series -- understanding of functions (3) formal parameters, arguments, nested calls and chain access
SQL注入
flex布局原理及常见的父项元素
A trick to teach you to easily understand Potter's map
C language explanation series - understanding of functions (4) declaration and definition of functions, simple exercises
Go exceed API source code reading (VI) -- deletesheet (sheet string)