zoukankan      html  css  js  c++  java
  • STA分析(七) sdc

    STA分析前的环境设置,包括:setup clocks,specifying IO characteristics

    1)定义一个master clock:create_clock -name .. -period .. -waveform .. [get_ports .. ]

       推荐clock的name与pin的名字相同,period的单位一般是ns,waveform的第一个参数表示上升沿的发生时间。默认是{0, period/2}.

       关于clock_transition的定义,如果clock定义为PLL的output,通过set_clock_transition来定义。

                                              如果clock定义为input pin,通过set_input_transition来定义。

             用来在CTS之前,确定clock的delay,在CTS之后,不再具有参考意义。

       关于clock_uncertainty的定义,一般由clock的jitter和slew来组成。对于-setup来说表示clock向前的偏移量,对于-hold来说表示clock向后的偏移量。

             set_clock_uncertainty -setup 0.2 [get_clocks CLK]  都使的-setup和-hold的check,余量更少。

             set_clock_uncertainty -hold 0.05 [get_clocks CLK]

       关于clock_latency的定义,分为两部分:network latency和source latency。其中network latency表示从clock definition到FF的clock 的clock pin的

             path,source latency 表示从clock source 到clock definition的path。其中在CTS之后,network latency由set_propagated_clock来代替。

             总体的clock_latency等于network_latency+source_latency。

             set_clock_latency 1.322 (-source) -max [get_clocks CFG_CLK]。

    若有其他的clock,并没有相位差别的,最好定义为generated_clock,这样的好处,计算clock_latency时,source_latency也

             能很好的继承下来。generated_clock的source_latency表示从master_clock的definition到generated clock的definition的path。

              create_generated_clock -name PCLK2 -source [get_ports PCLK] -multiply_by(devided_by) 2 [get_pins UCLK/Q]

    2)Timing path:valid start_point:input port和FF的clock input。

                           valid end_point:output port和FF的data input。

             所以一个valid的data_path是:从input port到FF的data input。

                                                      从input port到output port。

                                                      从FF的clock input到FF的data input。

                                                      从FF的clock input到output port。

              STA中所有的Timing path都由endpoint的clock来定义,如若没有,则为default path group。STA中的analysis和report都以clock为单位。

    3)model external attributes:

             对于input delay,需要定义set_driving或set_driving_cell来确定驱动能力,也就是interconnect或其他期间的电阻值。value越小,驱动能力越强。

               set_driving_cell  -lib_cell  BUFFD4  -library tech90 [get_ports testmode3]

               或者可以通过set_input_transition 0.25 [get_ports SD_DIN*]来定义。

               以上三种方法都是为了定义在input path中,第一个cell的delay。

            对于output delay,通过定义set_load ,来定义output ports的cap load,从而来确定output中的delay。 

               set_load  -pin_load 0.007 [get_ports {shift_wire[31]}]

    4)STA中的其他DRC:set_max_transition/set_max_capacitance/set_max_fanout/set_max_area。对象可以是pin/net/port

    5)时序例外的分析:set_case_analysis:针对某个pin/port上的constant。应用在SCAN logic 和clock的 multiplexers中。

                              set_disable_timing:应用在clock的 multiplexers中。set_disable_timing -from S -to Z [get_cells UMUX0]

                                                           从select端到output端。

                              set_max_delay 1.2 -from [get_clocks SYS_CLK] -to [get_clocks CFG_CLK]:

                              set_max_delay 1.2 -from [get_clocks SYS_CLK] -to [get_clocks CFG_CLK]:规定特定path上的constraint,可以分割timing

                                                                                                                                            arc。

    对于multiplexer有两个clock的输入引脚,set_false_path在两个输入时钟间。

  • 相关阅读:
    过滤textarea
    vue引用jquery
    vue_ajax插件Axios
    VeeValidate
    mongodb
    WEBGL实现--three.js笔记整理
    My SQLworkbench问题总结
    vue遇到的问题
    MYSQL使用笔记
    vue笔记
  • 原文地址:https://www.cnblogs.com/-9-8/p/4643526.html
Copyright © 2011-2022 走看看