Clock Tree Synthesis - Why Clock Tree Synthesis Is Necessary - CSDN Blog
Clock Tree Synthesis - Why Clock Tree Synthesis Is Necessary - CSDN Blog
Digital IC back-end process - (4) Clock Tree Synthesis Clock Tree Synthesis
Luka Meow Published on 2022-03-11 17:27:59 Reading volume: 7.4k Collection 156 Likes 12
Classification column: Digital IC backend notes Article tags: fpga development c language Development language
Digital IC backend n… The column contains this content 220 subscriptions 27 articles S
Before clock tree synthesis is performed, the clock tree has not yet been generated. The clock logic structure is as shown in the figure on the left. A
source terminal (root) eventually fans out to the clock terminals of many registers. But we know that the drive and load of the path that the clock sou
reach different registers are different, so the time when the clock signal reaches the clock end of each register is also different. The time deviation w
reaches different registers is called skew. The traditional CTS is for Reduce skew.
After clock tree synthesis, a clock tree is formed by adding three-level buffers with three colored triangles as shown in the figure on the right. The clo
will first reach the buffers at all levels so that the time it finally reaches the clock end of each register is almost the same.
1. Keep the clock skew as small as possible, especially for clock quality requirements or high-frequency clocks;
First of all, for a design, the most important step to perform clock tree synthesis is to define the clock terminal. Both root and sink need to know, and
software calculates the delay according to the definition.
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_r… 2/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
First define the root point of the clock and use create_clock to define the root point of the clock.
If it is a generated clock (generated clock), it needs to be defined using create_generated_clock, and its master clock needs to be clearly defined. A
time, it is required that the generate clock and master clock can be traced.
As shown in the figure above, the Master clock, CLKP and Generated clock are named CLKPDIV2 and defined using the command:
Icc_shell>create_generated_clock -name CLKPDIV2 -source UPLL0/CLKOUT -add -master_clock CLKP -divide_by 2 [get_pins UFF0/Q]
The master clock is the master clock defined through create_clock, which is CLKP in the figure; the divided clock is defined as the generated clock t
command.
When generating a generated clock, you must clearly understand the phase relationship between the generated clock and the master clock (rise->r
>fall or fall->rise or fall->fall). These relationships are grafted by the bridge source clock, so there is generated The relationship between clock and s
clock, and source clock and master clock.
In the above figure, the source clock is the master clock. However, if the relationship between the generated clock and the master clock found
to the statement is inconsistent with the actual relationship, otherwise it will cause some analysis errors.
As shown in the figure, the master clock is CLK and the generated clock is uDIV.
Then according to the definition, the phase relationship between master clock and gerenated clock is as shown in the figure:
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_r… 3/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
According to the above definition, generated_clock is defined on the divided-by-two output terminal Q, and its source is CLK. But we see that the clo
terminals CK and CLK of the Udiv register are inverted (that is, the phase difference is 180 degrees).
In fact, the phase relationship between master clock and gerenated clock should be:
The first method of correction is to change the source of the generated clock, that is, make the path between the generated clock and the source clo
and single (single means that the declared phase edge relationship is consistent with the actual phase edge relationship). The general approach is
source clock to the clock end of the flip-flop.
The corresponding command should be create_generated_clock -name CLKdiv2 -divide_by 2 -source [get_pins Udiv/Clk] [get_pins Udiv/Q]
The second is to directly declare the phase edge relationship between the generated clock and the master clock. as follows:
Considering the convenience of later review constraint, it is strongly recommended to use the second method to implement it (this method is used in
projects).
(Personal thoughts. In the ICC man page, the -source master_pin option for create_generated_clock
Specifies the master clock pin, which is either a master clock source pin or a pin in the fanout of the master clock and driving the generated clock de
The clock waveform at the master pin is used for deriving the generated clock waveform.
In other words, the -source option can be followed by the clock pin that drives the flip-flop that generates the clock? I don't quite understand the con
source clock.
For a multi-level frequency division clock like this, the definition of FFdiv3 is
After defining the clock source end, you need to determine the endpoints of the timing path.
Sink pin/sync
CTS will optimize the timing DRC and the skew and insertion delay of the c
Stop pin pin Nodes that need to be balanced
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_r… 4/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
Go through this node to find the final sink calculation and optimize insertion
Non_stop The signal passes through this
skew
pin node
The processing is the same as the stop pin, but there is some delay on the
Float pin The final node is "hidden" behind
1. Non-stop pins (-non_stop_pins) 2. Exclude pins (-exclude_pins) 3. Stop pins (-stop_pins) 4. Floating pins (-float_pins)
1. Nonstop pins
Unbroken pins: ICC traces through unbroken pins to find the true clock tree endpoint. The clock pin that drives the sequential unit that generates the
implicit uninterruptible pin.
·ICC believes that the clock input pin of the integrated clock gating ICG (integrated clock-gating) unit is an implicit uninterrupted pin, and there is no
manually set it, as shown in ① in the figure. (The clock gating cell is an indispensable unit for reducing dynamic power. ICG can also eliminate glitch
·If the fan-out of the timing unit drives the generated clock, that is, the timing unit is used for frequency division to generate the generated clock, as s
in the figure. ICC treats the clock pins of this timing unit as implicit nonstop pins and traces the real clock tree endpoints through the timing unit.
Excluded pins: clock tree endpoints excluded from clock tree timing calculation and optimization, that is, clock tree balance is not performed. ICC on
Exclude pins in calculations and optimization design rule constraints (logical DRC, i.e. max_cap/max_tran/max_fanout/max_length).
ICC will trace backward from the clock source and automatically determine implicit stop pins and implicit exclude pins (it is automatically determined
called implicit).
·Another clock fans out the source pins of the clock tree (Source pins)
•Output port
T
•Incorrectly defined clock pin (e.g. clock pin has no triggering edge information or no timing arc to the output pin) pre
Luka Meow focus on 12
• Keep the input pin of the buffer or inverter constant (by using set_case_analysis)
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_r… 5/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
•Input pins of combinational logic cells or integrated clock gating cells that do not have any fan-out or do not have any enabled timing arcs
All non-clock pins (such as the D pin of FF or the input of combinational logic) are called excluded (ignored) pins. These pins do not need to be cons
during clock tree propagation and no balancing is required.
In addition to ICC-inferred exclude pins (implicit exclude pins), ICC also supports user-defined (or explicit) exclude pins. For example, you can defin
exclude pin to exclude all branches of a clock tree leading from some combinational logic (as shown in the figure below), or to exclude an implicit st
Stop pin: The endpoint of the clock tree used for balancing delays. During clock tree synthesis, ICC will use Stop pins to calculate and optimize des
constraints and clock tree timing (Skew and Insertion Delay). Stop pins are also called Sink pins, which is what we call the sink end of the clock tree
balance.
All clock pins of ##FF are called stop (sync) pins. The clock signal should not propagate after reaching the SYC/STOP pin.
The default clock sink is the implicit stop pin. Additionally, ICC supports user-defined (or explicit) stop pins. For example, you can define a stop pin t
branch on a combinational unit input, or use an implicit exclude pin as a clock sink.
ICC assigns zero phase delay to all stop pins (implicit and explicit) and uses this delay during delay balancing.
Therefore, the tool only balances the delays (minimize skew) of stop pins. If other pins need to be optimized, the pins need to be set and told to ICC
4. Float pins
Floating Pin: A clock pin with special insertion delay requirements. Similar to stop pins, but the pin's internal clock delay is taken into account when
clock tree. When the tool calculates the insertion delay (Insertion delay) of the Float Pins, it will add the Float Pin delay (positive or negative) to the
Insertion delay.
As shown in the figure above, it is the clock input pin of the hard macro and needs to be considered when building the clock tree. But before it can b
T
a sync pin, the macro's internal tree needs to be balanced. The final node is hidden behind. pre
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_r… 6/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
• -float_pin_max_delay_fall max_delay_fall_value
• -float_pin_max_delay_rise max_delay_rise_value
• -float_pin_min_delay_fall min_delay_fall_value
• -float_pin_min_delay_rise min_delay_rise_value
• -float_pin_logic_level logic_level_value
(PS: When using -float_pins, at least one floating pin delay option must be specified)
Reduce pin insertion delay and specify positive pin delay (positive float pins)
The internal delay information of the Hard macro is represented in the unit's timing model (.lib). ICC uses this model to determine the external clock
Hard macro as a clock sink. During CTS, the ICC balances skew on the macro external clock pin and minimizes insertion delay.
When you need to change the Hard macro timing characteristics, you need to use floating pins to specify the timing characteristics of the Hard mac
clock tree.
T
pre
Explain these pins with examples in the student guide. As shown in the figure, the pin of the macro is defined as an implicit exclude pin, so ICC will
calculate the skew and insertion delay of the macro after the pin. Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_r… 7/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
Through the set_clock_tree_exceptions -stop_pins command, the macro pin is defined as a stop pin. ICC can optimize its skew and insertion delay.
in the figure, we find that ICC balances the clock to IP_CLK end and the clock to FF clk end, and The delay within the macro is not considered.
When IP_CLK is set to a float pin, the timing characteristics of the macro's internal clock tree can be considered, so that the insertion delay from the
the FF inside the macro is balanced with the insertion delay from the clock to the external FF. Clock.
5. Dont_touch_subtrees
Don't touch subtree: In some cases, you want to preserve part of the existing clock tree and need to set it like this. For example, when two clock net
share part of some clock logic behind a multiplexer. The portion of the clock tree that is retained is called the untouched subtree.
Icc_shell>set_clock_tree_exceptions -dont_touch_subtrees
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_r… 8/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
When there is a designed clock tree in the design (Pre-exisiting clock tree in the picture), you can use set_clock_tree_exceptions -dont_touch_subtr
to set it as the dont_touch attribute. CTS will compare other designed clock trees with the pre-existing clock tree. balance
Or remove it through the remove_clock_tree command, and CTS will recalculate the delay from CLOCK to the sink.
The above is an introduction to clock endpoints. And what we are talking about is balancing between various paths under the same clock.
If there are multiple clock root terminals defined by create_clock in the design, the two clocks are not synchronized, but some of their registers will t
default, when CTS builds CLOCK1 and CLOCK2, it will build clock trees separately and will not perform inter-clock balance.
To balance multiple clock trees, you need to add commands to the tool.
T
The picture above shows the two clocks after inter-clock balance. PS:
pre
TNS: total negative slack, the total negative timing time, that is, the Luka
sum ofMeow
slack less
focusthan
on 0 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_r… 9/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
THS: the negative timing sum of total hold slack total hold time
If slack is a positive value, it means that the design timing requirements are met; if it is a negative value, it means that the design timing requiremen
met.
-delay_offset指定延迟偏移值。
正值表示-offset_to选项中指定的时钟落后于-offset_from选项中指定的时钟。
负值表示-offset_to选项中指定的时钟早于-offset_from选项中指定的时钟。
lab中教了一种检查时钟树的方法,有助于进行时钟端点的设置等。
通过报告可以查看设计中定义的时钟、生成时钟及其属性。
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 10/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
可以查看时钟树的最大路径,即最大插入延迟,所驱动的sink端和插入的buffer的面积等,在还未进行CTS前暂未插入buffer,面积为0。同时可以发现
SD_DDR_CLK所驱动的sink端为0。
通过之前report_clock,我们知道该时钟是生成时钟。
该设计中只有hold的违例和面积违例,面积违例可以忽略,而在CTS之后才修复hold violation,此时设计符合CTS的条件。
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 11/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
可以看到各个clk驱动的sink端的数目及cell例化的名字,以及时钟驱动这个cell使用上升沿驱动还是下降沿驱动等。
而该设计中,将MUX的引脚设定为stop pins。
此时,所有查找到的pins已被更改为stop pins,
T
pre
在对时钟的root点和端点进行准确的定义后,开始进行对时钟树综合的设置。
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 12/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
·设置目标skew
·设置时钟树的references
时钟树综合前给软件指定创建时钟树的单元,一般用时钟buffer或时钟反相器。
Buffer:上升下降时间基本相同,逻辑简单,便于post-CTS对时钟树的修改;面积大,功耗大,insertion delay大。
一般库里的时钟buffer或inverter都是以CLK或CK开头,可用通配符查找
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 13/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
·时钟树布线规则的定义
为时钟线定义NDR(一般设置双倍线宽,双倍间距)
T
时钟的翻转频率较高,clock path 上受到的串扰以及 EM 影响也较大。因此,通常会采取双倍宽度的绕线宽度。默认的绕线规则都是单位宽度,就是指
pre
technology lef 文件中定义的金属层宽度。 Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 14/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
或者
Icc_shell>define_routing_rule CLOCK_DOUBLE_SPACING \
为时钟布线选择自己定义的NDR以及金属层次。由于标准单元出pin大部分是M1/M2,如果设置ndr rule,会导致很多DRC。因此,在sink端使用默认
线宽、间距)进行布线。
-use_default_routing_for_sinks 1
为了使得clock tree质量更好,我们往往将高层用来作为时钟信号的走线。 T
pre
set_clock_tree_options -layer_list {M7 M8} Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 15/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
·时钟树综合前准备
设置时钟树延迟计算模式
检查时钟树 icc_shell>check_clock_tree
·时钟树综合
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 16/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
报告每个时钟树在CTS阶段插入的buffer数量和面积,时钟树的最长路径延时,最重要的是时钟skew的大小,即同一时钟域下,最大路径减最小路径的
T
pre
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 17/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
如图中只存在的是hold和面积的违规,并且前面的报告分析CTS的质量满足,Pre-CTS完成。
·Post-CTS
CTS之后由于时钟树已经建立,所以需要将时钟网络以及高扇出网络的理想属性移除,并开始修复hold违反。下面逐一进行讲解如何操作。
·在CTS后,工具会自动移除所有时钟的理想属性。最好也手工设置
icc_shell>remove_clock_latency $clk
T
pre
Luka Meow focus on
·重新定义关于clock uncertainty的定义,去掉其中估计的clock skew的部分 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 18/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
clock uncertainty分为setup和hold,preCTS和postCTS几种不同的情况
一般的处理原则是:
pre CTS,setup: uncertainty = PLL jitter + 预估的clock skew pre CTS,hold: uncertainty = 预估的clock skew
在移除理想属性以及sdc中的latency信息之后用update_clock_latency来更新latency信息。
icc_shell>update_clock_latency
icc_shell>set_fix_hold [ all_clocks ]
Psyn经常配合-area_recovery选项,对面积进行优化
设置icc_shell>set_max_area 0
指定若path存在指定的slack的值,则会对面积进行优化,因为对面积的优化会导致时序变差,只有有slack余量能对进行面积优化
Icc_shell>extract_rc 提取寄生参数
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 19/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
icc_shell>report_qor
经过hold修复,已经没有hold的违规
最后,进行时钟的绕线
T
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 20/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
icc_shell>report_design -physical
Add to:
After the clock tree stage is completed, since many inverters or buffers are inserted into the design, these units are also standard units and need to
derive_pg_net connects them to P/G net and pin, otherwise a short-circuit error will occur in verify_lvs.
The knowledge points of the article match the official knowledge archives, allowing you to further learn related knowledge.
C skill tree front page Overview : 182,945 people are studying the system
1个可以免费学习IC后端的网站(推荐)
数字ic后端_入门/进阶/实战_快速入门_IC免费学习资源网
时钟树综合知识分享 weixin_37584728的博
T
时钟树综合干货分享 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点。点击进去后出现任何损失与社区无关。 在今天主题分享之前,发一个社区的招聘信息。
pre
Luka Meow focus on 12
ICC图文流程——(四)时钟树综合Clock Tree Synthesis 热门推荐 weixin_46752319的
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 21/25
14/11/2023, 11:56 [Selected] Digital IC back-end process - (4) Clock Tree Synthesis_Why clock tree synthesis is necessary - C…
一个经典的从前端代码到后端版图的流程.rar
1 Overview 2 1.1 Setting Up Environment . . . . . . . . . . . . . . . . . . . . . . . 2 2 Algorithm Modelling 2 3 RTL Coding 2 3.1 Style and Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Cortex M3时钟树.pdf
根据手册自画的时钟框架图
时钟网格与时钟树设计方法对比研究
基于片上偏差对芯片性能的影响,分析对比了时钟树设计与时钟网格设计,重点分析了时钟网格抗OCV影响的优点,并利用实际电路应用两种方法分别进行设计对比,通
什么是时钟树综合? baidu_34971492的
时钟树z综合(CTS)是沿ASIC设计的时钟路径插入buffers/inverters的过程,以平衡时钟延迟到所有时钟输入。因此,为了平衡skew并最小化插入延迟CTS。如下图1所示
数字IC后端时钟树综合专题(OCC电路案例分享) weixin_37584728的博
数字IC后端时钟树综合专题(OCC电路案例分享) 为了更好满足各位星友的需求以及吾爱 IC 社区知识星球的发展(目前知识星球已经有312 位星友),最近小编思考了很
The meaning of WNS, WHS, TNS and THS in VIVADO zpc0212's blog
Recently, I am advancing the project progress. Since the data bus width reaches 1024 bits (K7 is still powerful), the timing warning is particularly large when using VIVAD
Talking about timing design (3) Entering the door of timing constraints! Reborn
Table of Contents Preface Intra- Clock &Inter- Clock Paths Timing Constraints Main Clock Constraints Derived Clock Constraints Delay Constraints False Path Constrain
Luka Meow
6 years of coding No certifi…
T
Search blogger articles
pre
Luka Meow focus on 12
https://blog.csdn.net/sinat_41774721/article/details/123430089?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc… 22/25