【时序约束】读懂用好Timing_report

news2024/9/22 13:35:49

一、静态时序分析:

静态时序分析(Static Timing Analysis)简称 STA,采用穷尽的分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误并报告。
STA 不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少、覆盖率极高,不仅可以对芯片设计进行全面的时序功能检查,而且还可以利用时序分析的结果来优化设计。所以 STA 不仅是数字集成电路
设计 Timing Sign-off 的必备手段,也越来越多地被用到设计的验证调试工作中。
STA 在 FPGA 设计中也一样重要,但不同于一般数字集成电路的设计,FPGA 设计中的静态时序分析工具一般都整合在芯片厂商提供的实现工具中。在 Vivado 中甚至没有一个独立的界面,而是通过几个特定的时序
报告命令来实现。

二、时序命令与报告

Vivado 中用于时序分析的命令主要有以下两条,且都有对应的图形化设置界面。

  • report_timing_summary 主要用于实现后的 timing sigh-off
  • report_timing 主要用于交互式的约束验证以及更细致具体的时序报告与分析
    1.report_timing_summary命令
    report_timing_summary 实际上隐含了 report_timing、report_clocks 、check_timing 以及部分的 report_clock_interaction 命令,所以我们最终看到的报告中也包含了这几部分的内容。
    report_clocks
    check_timing
    report_clock_interaction

Timing Summary 报告把路径按照时钟域分类,每个组别下缺省会报告 Setup、Hold 以及 Pulse Width 检查最差的各 10 条路径,还可以看到每条路径的具体延时报告。
每条路径具体的报告会分为 Summary、Source Clock Path、Data Path 和 Destination Clock Path 几部分,详细报告每部分的逻辑延时与连线延时。用户首先要关注的就是 Summary 中的几部分内容,发现问题后再根据具体情况来检查详细的延时数据。其中,Slack 显示路径是否有时序违例,Source 和 Destination 显示源驱动时钟和目的驱动时钟及其时钟频率, Requirement 显示这条路径的时序要求是多少,Data Path 显示数据路径上的延时,Logic Level 显示这条路径的逻辑级数,而 Clock Path Skew 和 Clock Uncertainty 则显示时钟路径上的不确定性。

report_timing_summary示例

report_timing_summary
INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -2, Delay Type: min_max.
INFO: [Timing 38-191] Multithreading enabled for timing update using a maximum of 32 CPUs
Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
-----------------------------------------------------------------------------------------------
| Tool Version : Vivado v.2022.1 (lin64) Build 3526262 Mon Apr 18 15:47:01 MDT 2022
| Date         : Fri May 24 18:24:22 2024
| Host         : deep-PowerEdge-R730xd running 64-bit Ubuntu 20.04.6 LTS
| Command      : report_timing_summary
| Design       : single_bit_syn
| Device       : 7vx485t-ffg1157
| Speed File   : -2  PRODUCTION 1.12 2014-09-11
------------------------------------------------------------------------------------------------
Timing Summary Report
------------------------------------------------------------------------------------------------
| Timer Settings
| -----------------------------------------------------------------------------------------------
  Enable Multi Corner Analysis               :  Yes
  Enable Pessimism Removal                   :  Yes
  Pessimism Removal Resolution               :  Nearest Common Node
  Enable Input Delay Default Clock           :  No
  Enable Preset / Clear Arcs                 :  No
  Disable Flight Delays                      :  No
  Ignore I/O Paths                           :  No
  Timing Early Launch at Borrowing Latches   :  No
  Borrow Time for Max Delay Exceptions       :  Yes
  Merge Timing Exceptions                    :  Yes
  
  Corner    Analyze      Analyze  
  Name     Max Paths    Min Paths
  ------   ---------    --------- 
  Slow        Yes          Yes  
  Fast        Yes          Yes 
-----------------------------------------------------------------------------------------------------------
| Report Methodology
| ---------------------------------------------------------------------------------------------------------
Rule       Severity  Description                    Violations  
---------  --------  -----------------------------  ----------  
TIMING-9   Warning   Unknown CDC Logic              1 
TIMING-18  Warning   Missing input or output delay  2  

Note: This report is based on the most recent report_methodology run and may not be up-to-date. Run report_methodology on the current design for the latest report.
| check_timing report(check_timing)

Table of Contents
-----------------
1. checking no_clock (0)      // There are 0 register/latch pins with no clock.
2. checking constant_clock (0)// There are 0 register/latch pins with constant_clock.
3. checking pulse_width_clock (0)// There are 0 register/latch pins which need pulse_width check
4. checking unconstrained_internal_endpoints (0) // There are 0 pins that are not constrained for maximum delay.// There are 0 pins that are not constrained for maximum delay due to constant clock.
5. checking no_input_delay (0)//There are 0 input ports with no input delay specified. There are 0 input ports with no input delay but user has a false path constraint.
6. checking no_output_delay (0)// There are 0 ports with no output delay specified. There are 0 ports with no output delay but user has a false path constraint There are 0 ports with no output delay but with a timing clock defined on it or propagating through it
7. checking multiple_clock (0)//There are 0 register/latch pins with multiple clocks.
8. checking generated_clocks (0)// There are 0 generated clocks that are not connected to a clock source.
9. checking loops (0)// There are 0 combinational loops in the design.
10. checking partial_input_delay (0)// There are 0 input ports with partial input delay specified.
11. checking partial_output_delay (0)// There are 0 ports with partial output delay specified.
12. checking latch_loops (0)// There are 0 combinational latch loops in the design through latch input
------------------------------------------------------------------------------------------------
| Design Timing Summary
| ----------------------------------------------------------------------------------------------
    WNS(ns)      TNS(ns)  TNS Failing Endpoints  TNS Total Endpoints      WHS(ns)      THS(ns)  THS Failing Endpoints  THS Total Endpoints     WPWS(ns)     TPWS(ns)  TPWS Failing Endpoints  TPWS Total Endpoints 
     -------      -------  ---------------------  -------------------      -------      -------  ---------------------  -------------------     --------     --------  ----------------------  --------------------
     2.845        0.000                      0                    6        0.043        0.000                      0                    6        4.650        0.000                       0                     5  
All user specified timing constraints are met.
------------------------------------------------------------------------------------------------
| Clock Summary (report_clocks)
| -------------------------------------------------------------------------------------------------------------
Clock  Waveform(ns)       Period(ns)      Frequency(MHz)
-----  ------------       ----------      --------------
clk_a  {0.000 5.000}      10.000          100.000 
clk_b  {5.000 15.000}     20.000          50.000    
------------------------------------------------------------------------------------------------
| Intra Clock Table
| -----------------------------------------------------------------------------------------------------------------
Clock             WNS(ns)      TNS(ns)  TNS Failing Endpoints  TNS Total Endpoints      WHS(ns)      THS(ns)  THS Failing Endpoints  THS Total Endpoints     WPWS(ns)     TPWS(ns)  TPWS Failing Endpoints  TPWS Total Endpoints  
-----             -------      -------  ---------------------  -------------------      -------      -------  ---------------------  -------------------     --------     --------  ----------------------  --------------------  
clk_a               2.845        0.000                      0                    3        0.043        0.000                      0                    3        4.650        0.000                       0                     2  
clk_b              12.395        0.000                      0                    3        0.066        0.000                      0                    3        9.650        0.000                       0                     3  
------------------------------------------------------------------------------------------------

2.补充:工艺上的知识:OCV(在芯片上的不确定性) 与 PVT (工艺/电压/温度)

  • OCV:即便是同一种 FF(触发器),在同一个芯片上不同操作条件下的延时都不尽相同,我们称这种现象为 OCV(on-chip variation)。OCV 表示的是芯片内部的时序偏差,虽然很细小,但是也必须严格考虑到时序分析中去。

  • PVT(Process / Voltage / Temperature)三 个方面,而 STA 要做的就是针对不同工艺角(Process Corner)下特定的时 序模型来分析时序路径,从而保证设计在任何条件下都能满足时序要求, 可以正常工作。通常 PVT 对芯片性能的影响如下图所示, 栅极间的距离越小,温度越低,电压越高,电平变换和门延迟越小就越好。
    影响chip的三大因素

  • 通俗的来讲:由于工艺的原因,在这些cornor下可能会有不同的性能。在FPGA设计中的静态时序分析一般仅考虑Best Case和Worst Case,也称作Fast Process Corner 和Slow Process Corner,分别对应极端的PVT条件。
    最快最慢的依据

    Fast Corner Model: 最好的工艺+最低温度+最高电压下的模型;Slow Corner Model: 最差的工艺+最高温度+最低电压下的模型;在Vivado中,会对以上两个corner进行时序分析,并给出最差情况的报告。在setup中分析的是slow process corner,在hold中分析的是fast process corner。如果在在slow process corner模型下能满足setup的要求,那么其他模型也就都能满足;如果在fast process corner模型下能满足hold的要求,那么其他模型下也都能满足。
    

|Timing Details (report_timing)
From Clock: clk_a To Clock: clk_a

Setup :            0  Failing Endpoints,  Worst Slack        2.845ns,  Total Violation        0.000ns//暂无时序违例
Hold  :            0  Failing Endpoints,  Worst Slack        0.043ns,  Total Violation        0.000ns
PW    :            0  Failing Endpoints,  Worst Slack        4.650ns,  Total Violation        0.000ns

Max Delay Paths// 最大Timing_path

--------------------------------------------------------------------------------------
Slack (MET) :             2.845ns  (required time - arrival time)
Source:                 data_in
                (input port clocked by clk_a  {rise@0.000ns fall@5.000ns period=10.000ns})
Destination:            d1
                 (output port clocked by clk_a  {rise@0.000ns fall@5.000ns period=10.000ns})
  Path Group:             clk_a  
  Path Type:              Max at Slow Process Corner //最差大的工艺,最高温度,最低电压下的模型
  Requirement:            10.000ns  (clk_a rise@10.000ns - clk_a rise@0.000ns)   //要求你的时序路径在规定delay要到达的要求;目前是同一个时钟域就是clka的时钟周期,不同时钟域路径就是2个clk之间的最小时钟沿的差距。
  Data Path Delay:        3.120ns  (logic 2.653ns (85.050%)  route 0.466ns (14.950%)) //Data Path Delay主要分为logic delay + route delay,一般各占比50%左右表示最优,若建立时间违例且占比严重不均匀,则需要进行优化
  Logic Levels:           2  (IBUF=1 OBUF=1) 
  Input Delay:            2.000ns 
  Output Delay:           2.000ns
  Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE//Uncertainty: 该值来自SDC, 通常signoff uncertainty = foundry requirest margin + PLL jitter + IR-drop modeling.    
  Total System Jitter     (TSJ):    0.071ns
  Total Input Jitter      (TIJ):    0.000ns
  Discrete Jitter          (DJ):    0.000ns
  Phase Error              (PE):    0.000ns

最大Timing_path
最大timing_path

 Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)  //通过该单元的延时是Incr;
-------------------------------------------------------------------    -------------------
                      (clock clk_a rise edge)      0.000     0.000 r      //r代表上升延迟;f代表下降延迟。
                      input delay                  2.000     2.000        //输入延迟        
                                                   0.000     2.000 r  data_in (IN) //芯片输入端口到芯片内部真正数据输入端之间的线延时,是2.000ns。(可以认为是管脚的延时)
                        net (fo=0)                 0.000     2.000    data_in
                        IBUF (Prop_ibuf_I_O)       0.620     2.620 r  inst_0/O
                        net (fo=2, unplaced)       0.466     3.086    d1_OBUF
                        OBUF (Prop_obuf_I_O)       2.034     5.120 r  d1_OBUF_inst/O
                         net (fo=0)                0.000     5.120    d1
                                                                   r  d1 (OUT)
-------------------------------------------------------------------    -------------------
                     (clock clk_a rise edge)      10.000    10.000 r
                     clock pessimism               0.000    10.000
                      clock uncertainty           -0.035     9.965 
                      output delay                -2.000     7.965
-------------------------------------------------------------------
                      required time                          7.965  //required time 在此时间内达到时序要求的时间
                      arrival time                          -5.120  //arrival time 是实际到达的时间
-------------------------------------------------------------------
                      slack                                  2.845  //arrival time - required time

路径分析

Min Delay Paths// 最小Timing_path

--------------------------------------------------------------------------------------

Slack (MET) :             0.043ns  (arrival time - required time)
  Source:                 data_in
               (input port clocked by clk_a  {rise@0.000ns fall@5.000ns period=10.000ns})
Destination:            inst_8/D  
(rising edge-triggered cell FDRE clocked by clk_a  {rise@0.000ns fall@5.000ns period=10.000ns})
Path Group:             clk_a
Path Type:              Hold (Min at Slow Process Corner)//对于hold check来说,它会检测最短最快的组合逻辑路径和最晚的arrival time。
Requirement:            0.000ns  (clk_a rise@0.000ns - clk_a rise@0.000ns)
Data Path Delay:        0.957ns  (logic 0.513ns (53.678%)  route 0.443ns (46.322%))
Logic Levels:           1  (IBUF=1)
Input Delay:            1.000ns
Clock Path Skew:        1.763ns (DCD - SCD - CPR)
Destination Clock Delay (DCD):    1.763ns
Source Clock Delay      (SCD):    0.000ns
Clock Pessimism Removal (CPR):    -0.000ns
Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
Total System Jitter     (TSJ):    0.071ns
Total Input Jitter      (TIJ):    0.000ns
Discrete Jitter          (DJ):    0.000ns
Phase Error              (PE):    0.000ns

Location Delay type Incr(ns) Path(ns) Netlist Resource(s)


                  (clock clk_a rise edge)      0.000     0.000 r 
                  input delay                  1.000     1.000
                                               0.000     1.000 r  data_in (IN)
                  net (fo=0)                   0.000     1.000    data_in
                  IBUF (Prop_ibuf_I_O)         0.513     1.513 r  inst_0/O
                  net (fo=2, unplaced)         0.443     1.957    d1_OBUF
                  FDRE                                         r  inst_8/D

                  (clock clk_a rise edge)      0.000     0.000 r 
                                               0.000     0.000 r  clk_a (IN)
                  net (fo=0)                   0.000     0.000    clk_a
                  IBUF (Prop_ibuf_I_O)         0.620     0.620 r  inst_2/O
                  net (fo=1, unplaced)         0.466     1.086    wire_0
                  BUFG (Prop_bufg_I_O)         0.093     1.179 r  inst_3/O
                  net (fo=1, unplaced)         0.584     1.763    wire_6
                  FDRE                                         r  inst_8/C
                  clock pessimism              0.000     1.763
                  clock uncertainty            0.035     1.799
                  FDRE (Hold_fdre_C_D)         0.115     1.914    inst_8

                   required time                         -1.914//同一寄存器inst_8完成从D到Q的数据传输后的-1.914s
                   arrival time                           1.957//同一寄存器inst_8完成从D到Q的数据传输后的1.957

                   slack                                  0.043

要求时间和到达时间分析与标注

这里required time 是负的指的是inst_8寄存器开始从D 到Q开始启动的(launch event)之前就要从clka端口开始走,因此是在启动之前,所以用负号。对于slack=实际时间arrival time-要求时间required time的数值对应数值是第21行和第8行的数值进行计算。

Pulse Width Checks//脉冲宽度检查:默认情况下,这些时钟未被选中,因为它们仅用于报告目的,不影响实现工具的结果质量。

--------------------------------------------------------------------------------------
Clock Name:         clk_a
Waveform(ns):       { 0.000 5.000 }
Period(ns):         10.000
Sources:            { clk_a }
Check Type        Corner  Lib Pin  Reference Pin  Required(ns)  Actual(ns)  Slack(ns)  Location  Pin
Min Period        n/a     BUFG/I   n/a            1.408         10.000      8.591                inst_3/I
Low Pulse Width   Slow    FDRE/C   n/a            0.350         5.000       4.650                inst_8/C
High Pulse Width  Slow    FDRE/C   n/a            0.350         5.000       4.650                inst_8/C

From Clock: clk_b To Clock: clk_b

Setup :            0  Failing Endpoints,  Worst Slack       12.395ns,  Total Violation        0.000ns//暂无时序违例
Hold  :            0  Failing Endpoints,  Worst Slack        0.066ns,  Total Violation        0.000ns
PW    :            0  Failing Endpoints,  Worst Slack        9.650ns,  Total Violation        0.000ns

(1)Max Delay Paths //最大Timing_path


--------------------------------------------------------------------------------------
Slack (MET) :             12.395ns  (required time - arrival time)
Source:                 inst_10/C
    (rising edge-triggered cell FDRE clocked by clk_b  {rise@5.000ns fall@15.000ns period=20.000ns})
Destination:            data_out
    (output port clocked by clk_b  {rise@5.000ns fall@15.000ns period=20.000ns})
 Path Group:             clk_b
 Path Type:              Max at Slow Process Corner
 Requirement:            20.000ns  (clk_b rise@25.000ns - clk_b rise@5.000ns)
 Data Path Delay:        2.806ns  (logic 2.340ns (83.378%)  route 0.466ns (16.622%))
 Logic Levels:           1  (OBUF=1)
 Output Delay:           3.000ns
 Clock Path Skew:        -1.763ns (DCD - SCD + CPR)
 Destination Clock Delay (DCD):    0.000ns = ( 25.000 - 25.000 )
 Source Clock Delay      (SCD):    1.763ns = ( 6.763 - 5.000 )
 Clock Pessimism Removal (CPR):    0.000ns
 Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
 Total System Jitter     (TSJ):    0.071ns
 Total Input Jitter      (TIJ):    0.000ns
 Discrete Jitter          (DJ):    0.000ns
 Phase Error              (PE):    0.000ns
 
 Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
 -------------------------------------------------------------------    -------------------
                     (clock clk_b rise edge)      5.000     5.000 r
                                                  0.000     5.000 r  clk_b (IN)
                     net (fo=0)                   0.000     5.000    clk_b
                     IBUF (Prop_ibuf_I_O)         0.620     5.620 r  inst_4/O
                     net (fo=1, unplaced)         0.466     6.086    wire_1 
                     BUFG (Prop_bufg_I_O)         0.093     6.179 r  inst_5/O
                     net (fo=2, unplaced)         0.584     6.763    wire_7 
                     FDRE                                         r  inst_10/C 
-------------------------------------------------------------------    -------------------
                     FDRE (Prop_fdre_C_Q)         0.223     6.986 r  inst_10/Q
                     net (fo=2, unplaced)         0.466     7.453    q3_OBUF
                     OBUF (Prop_obuf_I_O)         2.117     9.569 r  inst_1/O
                     net (fo=0)                   0.000     9.569    data_out
                                                                  r  data_out (OUT)
-------------------------------------------------------------------    -------------------
                     (clock clk_b rise edge)     25.000    25.000 r 
                     clock pessimism              0.000    25.000 
                     clock uncertainty           -0.035    24.965
                     output delay                -3.000    21.965
       -------------------------------------------------------------------
                     required time                         21.965
                     arrival time                          -9.569     
       ------------------------------------------------------------------- 
                     slack                                 12.395     

(2)Min Delay Paths// 最小Timing_path

--------------------------------------------------------------------------------------
Slack (MET) :             0.066ns  (arrival time - required time)
Source:                 inst_9/C
 (rising edge-triggered cell FDRE clocked by clk_b  {rise@5.000ns fall@15.000ns period=20.000ns})
Destination:            inst_10/D
(rising edge-triggered cell FDRE clocked by clk_b  {rise@5.000ns fall@15.000ns period=20.000ns})
Path Group:             clk_b
Path Type:              Hold (Min at Fast Process Corner)
Requirement:            0.000ns  (clk_b rise@5.000ns - clk_b rise@5.000ns)
Data Path Delay:        0.194ns  (logic 0.100ns (51.619%)  route 0.094ns (48.381%))
Logic Levels:           0  Clock Path Skew:        0.145ns (DCD - SCD - CPR)
Destination Clock Delay (DCD):    0.825ns = ( 5.825 - 5.000 )
Source Clock Delay      (SCD):    0.498ns = ( 5.498 - 5.000 )
Clock Pessimism Removal (CPR):    0.182ns

Location Delay type Incr(ns) Path(ns) Netlist Resource(s)


                      (clock clk_b rise edge)      5.000     5.000 r                                     
                                                   0.000     5.000 r  clk_b (IN)
                      net (fo=0)                   0.000     5.000    clk_b
                      IBUF (Prop_ibuf_I_O)         0.126     5.126 r  inst_4/O
                      net (fo=1, unplaced)         0.231     5.358    wire_1
                      BUFG (Prop_bufg_I_O)         0.026     5.384 r  inst_5/O
                      net (fo=2, unplaced)         0.114     5.498    wire_7
                      FDRE                                         r  inst_9/C

                      FDRE (Prop_fdre_C_Q)         0.100     5.598 r  inst_9/Q
                      net (fo=1, unplaced)         0.094     5.692    wire_4
                      FDRE                                         r  inst_10/D

                      (clock clk_b rise edge)      5.000     5.000 r
                                                   0.000     5.000 r  clk_b (IN)
                      net (fo=0)                   0.000     5.000    clk_b
                      IBUF (Prop_ibuf_I_O)         0.293     5.293 r  inst_4/O
                      net (fo=1, unplaced)         0.243     5.536    wire_1
                      BUFG (Prop_bufg_I_O)         0.030     5.566 r  inst_5/O
                      net (fo=2, unplaced)         0.259     5.825    wire_7
                      FDRE                                         r  inst_10/C
                      clock pessimism             -0.182     5.643                   
                      FDRE (Hold_fdre_C_D)        -0.017     5.626    inst_10
    -------------------------------------------------------------------
                      required time                         -5.626      
                      arrival time                           5.692
    -------------------------------------------------------------------
                      slack                                  0.066    

Pulse Width Checks 检查时钟波形的占空比

Clock Name:         clk_b
Waveform(ns):       { 5.000 15.000 }
Period(ns):         20.000
Sources:            { clk_b }

Check Type        Corner  Lib Pin  Reference Pin  Required(ns)  Actual(ns)  Slack(ns)  Location  Pin
Min Period           n/a   BUFG/I      n/a            1.408            20.000      18.591       inst_5/I
Low Pulse Width     Slow  FDRE/C       n/a             0.350           10.000       9.650        inst_10/C
High Pulse Width    Slow  FDRE/C       n/a             0.350           10.000       9.650        inst_10/C

3.report_timing命令
report_timing 是更具体的时序报告命令,经常用来报告某一条或是某些共享特定节点的路径。用户可以在
设计的任何阶段使用 report_timing,甚至是一边设置 XDC,一边用其来验证约束的可行性与优先级。
在进行 Setup Check 时会加上一定的 clock pessimism,而 Hold Check 时则会减去一定的 clock pessimism。
report_timing示例

report_timing
INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -2, Delay Type: max.
INFO: [Timing 38-191] Multithreading enabled for timing update using a maximum of 32 CPUs
INFO: [Timing 38-78] ReportTimingParams: -max_paths 1 -nworst 1 -delay_type max -sort_by slack.
Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
------------------------------------------------------------------------------------
| Tool Version : Vivado v.2022.1 (lin64) Build 3526262 Mon Apr 18 15:47:01 MDT 2022
| Date         : Fri May 24 18:39:15 2024//注意看清日期避免低级错误
| Host         : deep-PowerEdge-R730xd running 64-bit Ubuntu 20.04.6 LTS
| Command      : report_timing
| Design       : single_bit_syn
| Device       : 7vx485t-ffg1157
| Speed File   : -2  PRODUCTION 1.12 2014-09-11
------------------------------------------------------------------------------------

Timing Report
 --------------------------------------------------------------------------------------------------------------
Slack (MET) :             2.845ns  (required time - arrival time)
  Source:                 data_in
                            (input port clocked by clk_a  {rise@0.000ns fall@5.000ns period=10.000ns})
  Destination:            d1
                            (output port clocked by clk_a  {rise@0.000ns fall@5.000ns period=10.000ns})
  Path Group:             clk_a//这里我们做CDC的隔离了,一个clk一个group;大多数工具默认会为每一个clock 定义一个path group,用户可以根据需求自定义path group, 如无用户自定义的path group 某条path 会被归为该path endpoint 驱动时钟对应的group.
  Path Type:              Max at Slow Process Corner //Max=max delay analysis 最大延迟分析;=setup
  Requirement:            10.000ns  (clk_a rise@10.000ns - clk_a rise@0.000ns)
  Data Path Delay:        3.120ns  (logic 2.653ns (85.050%)  route 0.466ns (14.950%))//Data Path Delay主要分为logic delay + route delay,一般各占比50%左右表示最优,若建立时间违例且占比严重不均匀,则需要进行优化。
  Logic Levels:           2  (IBUF=1 OBUF=1)//逻辑级数大或者扇出导致的;使用流水线,在过于冗长的组合逻辑增加寄存器进行打拍子。
  Input Delay:            2.000ns
  Output Delay:           2.000ns
  Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
    Total System Jitter     (TSJ):    0.071ns
    Total Input Jitter      (TIJ):    0.000ns
    Discrete Jitter          (DJ):    0.000ns
    Phase Error              (PE):    0.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
                         (clock clk_a rise edge)      0.000     0.000 r  
                         input delay                  2.000     2.000    
                                                      0.000     2.000 r  data_in (IN)
                         net (fo=0)                   0.000     2.000    data_in
                         IBUF (Prop_ibuf_I_O)         0.620     2.620 r  inst_0/O
                         net (fo=2, unplaced)         0.466     3.086    d1_OBUF
                         OBUF (Prop_obuf_I_O)         2.034     5.120 r  d1_OBUF_inst/O
                         net (fo=0)                   0.000     5.120    d1
                                                                      r  d1 (OUT)
  -------------------------------------------------------------------    -------------------

                         (clock clk_a rise edge)     10.000    10.000 r  
                         clock pessimism              0.000    10.000    //在进行 Setup Check 时会加上一定的 clock pessimism,而 Hold Check 时则会减去一定的 clock pessimism。
                         clock uncertainty           -0.035     9.965   //该值来自SDC, 通常signoff uncertainty = foundry requirest margin + PLL jitter + IR-drop modeling. 
                         output delay                -2.000     7.965    
  -------------------------------------------------------------------
                         required time                          7.965    
                         arrival time                          -5.120    
  -------------------------------------------------------------------
                         slack                                  2.845   //首先,确认所有路径的时序裕量(slack)都为正,确保没有时序违例。

4.get_timing_paths
Vivado 中还提供一个 get_timing_paths 的命令,可以根据指定的条件找到一些特定的路径。我们可以利用其返回值中的一些属性来快速定位设计中的问题。
例如逻辑级数(Logic Levels)这个影响 FPGA 性能的一大因素,因为经常隐藏在时序报告后很难被发现。在 Vivado 中,除了 借助综合后的报告来找到那些可能因为逻辑级数较高而导致的时序难满足的路径外,还有一个更直接的办法,可 以一次性报告出设计中那些高逻辑级数的路径,方便我们有针对性的深入分析和优化。
report_property -all [get_timing_paths ]示例

Property                     Type    Read-only  Value
ARRIVAL_TIME                 double  true       6.739
CLASS                        string  true       timing_path
CLOCK_PESSIMISM              double  true       0.000
CORNER                       string  true       Slow
DATAPATH_DELAY               double  true       4.739
DATAPATH_LOGIC_DELAY         double  true       2.615
DATAPATH_NET_DELAY           double  true       2.124
DELAY_TYPE                   string  true       max
ENDPOINT_CLOCK               clock   true       clk_a
ENDPOINT_CLOCK_DELAY         double  true       0.000
ENDPOINT_CLOCK_EDGE          double  true       10.000
ENDPOINT_CLOCK_ROOT          string  true
ENDPOINT_PIN                 port    true       d1
EXCEPTION                    string  true       
EXCEPTION_ID                 int*    true       
GROUP                        string  true       clk_a
INPUT_DELAY                  double  true       2.000
INTER_SLR_COMPENSATION       double  true  
LOGIC_LEVELS                 int     true       2 
MAX_FANOUT                   int     true       2
NAME                         string  true       {data_in --> d1}
OUTPUT_DELAY                 double  true       2.000
REQUIRED_TIME                double  true       7.965
REQUIREMENT                  double  true       10.000
ROUTABLE_NETS                int     true       unset***
SKEW                         double  true
SLACK                        double  true       1.225
STARTPOINT_CLOCK             clock   true       clk_a
STARTPOINT_CLOCK_DELAY       double  true       0.000
STARTPOINT_CLOCK_EDGE        double  true       0.000
STARTPOINT_CLOCK_ROOT        string  true  
STARTPOINT_PIN               port    true       data_in
TIME_BORROWED_FROM_ENDPOINT  double  true       
TIME_GIVEN_TO_STARTPOINT     double  true       
UNCERTAINTY                  double  true       0.035
USER_UNCERTAINTY             double  true     

我们现在可以看一下不同颜色标记出来的地方就是我们可以关注去优化的点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1944878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot原理——面试高频

目录 1.什么是起步依赖? 2.起步依赖如何工作? 3.什么是自动配置? 4.自动配置原理 1.什么是起步依赖? 起步依赖是Spring Boot中的一个概念,它实质上是一个Maven项目对象模型(POM),…

1 go语言环境的搭建

本专栏将从基础开始,循序渐进,由浅入深讲解Go语言,希望大家都能够从中有所收获,也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方,请指正!大家一起学习,…

IT服务管理业务策划与实施:追求IT用户满意与持续改进

在当今的信息化时代,IT服务已成为企业运营不可或缺的一部分。有效的IT服务管理不仅能够提升企业运营效率,还能显著增强IT用户满意度。本文将围绕IT服务管理的业务策划与实施展开探讨,旨在为运维团队提供一套全面、系统的参考框架。 一、IT服…

AI在候选人评估中的作用:精准筛选与HR决策的助力

一、引言 随着科技的迅猛发展,人工智能(AI)技术已逐渐渗透到各个行业和领域,人力资源管理(HRM)亦不例外。在候选人评估的环节中,AI技术以其高效、精准的特性,正在逐步改变着传统的招…

el-table表格 及其el-pagination分页 封装及其使用

1、首页在components文件夹中新建table文件夹 table文件夹下table.vue全部代码&#xff1a; <template><el-table:stripe"stripe":row-key"handlerRowKey()":tree-props"treeProps":border"border":show-summary"showS…

Vue3相比于Vue2进行了哪些更新

1、响应式原理 vue2 vue2中采用 defineProperty 来劫持整个对象&#xff0c;然后进行深度遍历所有属性&#xff0c;给每个属性添加getter和setter&#xff0c;结合发布订阅模式实现响应式。 存在的问题&#xff1a; 检测不到对象属性的添加和删除数组API方法无法监听到需要对…

蓝桥杯单片机学习总结(Day15 超声波测距)

开启超声波模块测距方法&#xff1a; X20106A是一款红外线检波接收的专用芯片&#xff0c;常用于电视机红外遥控接收器。当CX20106A接收到40KHz的信号时&#xff08;第五脚200K的电阻决定了其频率为40KHz&#xff09;&#xff0c;会在OUT脚输出一个低电平下降脉冲。这个信号甚至…

IDEA打开终端报错Cannot open Local Terminal命令行功能

idea项目中不能打开命令行功能 IDEA打开终端报错Cannot open Local Terminal 意思是打开命令行发生错误 idea上配置shell终端&#xff0c;命令行页面 打开右上角 File–> setting–> Tools–> 终端 找到Shell 路径 文本框中原本是是powershell.exe&#xff0c;现在…

Java | Leetcode Java题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; public class Solution extends VersionControl {public int firstBadVersion(int n) {int left 1, right n;while (left < right) { // 循环直至区间左右端点相同int mid left (right - left) / 2; // 防止计算时溢出if (isBadVers…

企业专线和家庭宽带的区别

企业专线&#xff08;也称为商业互联网服务&#xff09;与家庭宽带在多个方面存在区别&#xff0c;这些差异主要体现在网络性能、服务质量、价格、合同条款以及支持服务上。以下是两者的主要区别&#xff1a; 1、网络质量和速度&#xff1a; 企业专线通常提供更稳定、更快的网络…

虚拟机Ubuntu20.04 利用串口调试机械臂

虚拟机Ubuntu20.04 利用串口调试机械臂 串口库问题 由于机械臂使用的是串口进行驱动控制&#xff0c;在python中相关的串口库为serial和pyserial两个&#xff0c;这里我曾踩过雷同时安装了serial与pyserial两个库&#xff0c;导致报错如下所示&#xff1a; AttributeError: m…

Apache Tomcat文件包含漏洞复现(详细教程)

1.漏洞原理 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;其安装后会默认开启ajp连接器&#xff0c;方便与其他web服务器通过ajp协议进行交互。属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和…

责任链模式的应用与解析

目录 责任链模式责任链模式结构责任链模式适用场景责任链模式优缺点练手题目题目描述输入描述输出描述题解 责任链模式 责任链模式&#xff0c;亦称职责链模式、命令链&#xff0c;是一种行为设计模式&#xff0c;允许你将请求沿着处理者链进行发送。收到请求后&#xff0c;每…

韩顺平0基础学java——第36天

p715-735 反射调用速度慢 反射调用优化-关闭访问检查 1. Method和Field、Constructor对象都有setAccessible() 方法2. setAccessible作用是启动和禁用访问安全检查的开关 3&#xff0e;参数值为true表示反射的对象在使用时取消访问检查&#xff0c;提高反射的效率。参数值 为…

Redis核心技术与实战学习笔记

Redis核心技术与实战学习笔记 最近想沉下心来看下redis&#xff0c;买了蒋德钧老师的《Redis 核心技术与实战》,这里记录一些学习笔记 希望能够坚持下去有想一起学习的童鞋&#xff0c;可以点击跳转到文章尾部获取学习资源,仅供学习不要用于任何商业用途!!! redis知识全景图 …

2024-07-22 Unity AI行为树1 —— 框架介绍

文章目录 1 行为树2 行为树驱动方式3 行为树结点分类3.1 控制节点3.2 执行节点 4 行为树与状态机比较 本文章参考 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 行为树 ​ 行为树&#xff08;Behavior Tree&#xff0c;BT&#xff09;在游戏 AI 中是一种用于控制…

精益管理意识与企业战略规划的匹配度如何评估?

众所周知&#xff0c;精益管理不仅要求企业在生产运营过程中实现资源的最大化利用&#xff0c;同时也强调企业战略规划的精准性和前瞻性。因此&#xff0c;评估精益管理意识与企业战略规划的匹配度&#xff0c;对于企业的长期发展至关重要。具体方法如深圳天行健企业管理咨询公…

springboot 项目整合 AI (文心一言)

百度智能云网址&#xff1a;https://cloud.baidu.com/?fromconsole 注册——个人认证——登录成功 第一步&#xff1a;点击千帆大模型平台 ​ 第二步&#xff1a;点击应用接入——创建应用 ​ 第三步&#xff1a;点击接口文档——API列表——可以点击指定模型进行查看调…

【中项】系统集成项目管理工程师-第4章 信息系统架构-4.4数据架构

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

hamcrest 断言框架使用示例和优势分析

引言 在软件测试领域&#xff0c;断言是验证代码行为是否符合预期的关键环节。Hamcrest 断言框架&#xff0c;以其独特的匹配器&#xff08;Matcher&#xff09;概念和清晰的失败信息&#xff0c;赢得了广泛的赞誉。尽管 Python 标准库中没有内置的 Hamcrest 库&#xff0c;但…