clock的处理
1. 概念:
1.1 clock tree:从一个clock源出发,clock网络经过多级buffer,到达每个时序器件的clk脚。为了保证从clock源到每个器件clk脚的延时相差不多,clock在布局布线时做成树形网络结构,叫做clock tree。
1.2 clock latency:clock源到时序器件的clk脚的延迟叫做clock latency。分为source latency和network latency两部分。从clock源到设计的clock管脚的延迟叫source latency。从clock管脚到寄存器的clock脚叫network latency。
1.3 clock jitter:clock源是芯片外部管脚引入或是内部PLL产生的。clock的每个周期时间都会有微小的偏差,这种偏差叫做clock jitter。参见:http://blog.ednchina.com/olivernie/169580/message.aspx
1.4 clock skew:clock在不同时序器件clk脚上的时间差异叫做clock skew。
1.5 clock uncertainty:clock在时序器件clk脚上的不确定性,包括clock jitter和clock skew两部分的总和。
1.6 clock transition:clock信号的slew时间。分为上升沿时间和下降沿时间。
1.7 clock gating:指门控时钟。由于低功耗的要求,有些模块会停止工作。通过停掉clock减少这些模块的耗电。
2. DC综合:
2.1 create_clcok: create_clock -name "MY_CLOCK" -period 6 -waveform {0 3} [get_ports {clk}]
2.2 set_clock_uncertainty: set_clock_uncertainty 0.5 [get_clocks {MY_CLOCK}]
2.3 set_clock_transition: set_clock_transition 0.5 [get_clocks {MY_CLOCK}]
2.4 set_clock_latency: set_clock_latency 1 [get_clocks {MY_CLOCK}]
2.5 set_ideal_network: set_ideal_network [all_clocks]
3. Pre-layout STA:
3.1 create_clock:
3.2 set_clock_uncertainty:
3.3 set_clock_latency:
3.4 如果clock tree没有做完,还是要设定一个clock transition,不然计算出来的transition会很悲观:
set_clock_transition 0.5 [get_clocks {MY_CLOCK}]
4. Post-layout STA:
4.1 create_clock:
create_clock -name "MY_CLOCK" -period 6 -waveform {0 3} [get_ports {clk}]
4.2 set_clock_latency:
set_clock_latency 1 [get_clocks {MY_CLOCK}]
4.3 如果更保守的时序分析,给定较小的uncertainty:
set_clock_uncertainty 0.5 -setup [get_clocks {MY_CLOCK}]
set_clock_uncertainty 0.2 -hold [get_clocks {MY_CLOCK}]
4.4 设定clock为propagated:
set_propagated_clock [all_clocks]
文章评论(0条评论)
登录后参与讨论