【时序约束】读懂用好Timing_report

一、静态时序分析:

静态时序分析(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               :  YesEnable Pessimism Removal                   :  YesPessimism Removal Resolution               :  Nearest Common NodeEnable Input Delay Default Clock           :  NoEnable Preset / Clear Arcs                 :  NoDisable Flight Delays                      :  NoIgnore I/O Paths                           :  NoTiming Early Launch at Borrowing Latches   :  NoBorrow Time for Max Delay Exceptions       :  YesMerge Timing Exceptions                    :  YesCorner    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.000nsClock 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.071nsTotal Input Jitter      (TIJ):    0.000nsDiscrete Jitter          (DJ):    0.000nsPhase 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_inIBUF (Prop_ibuf_I_O)       0.620     2.620 r  inst_0/Onet (fo=2, unplaced)       0.466     3.086    d1_OBUFOBUF (Prop_obuf_I_O)       2.034     5.120 r  d1_OBUF_inst/Onet (fo=0)                0.000     5.120    d1r  d1 (OUT)
-------------------------------------------------------------------    -------------------(clock clk_a rise edge)      10.000    10.000 rclock pessimism               0.000    10.000clock 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.0000.000     1.000 r  data_in (IN)net (fo=0)                   0.000     1.000    data_inIBUF (Prop_ibuf_I_O)         0.513     1.513 r  inst_0/Onet (fo=2, unplaced)         0.443     1.957    d1_OBUFFDRE                                         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_aIBUF (Prop_ibuf_I_O)         0.620     0.620 r  inst_2/Onet (fo=1, unplaced)         0.466     1.086    wire_0BUFG (Prop_bufg_I_O)         0.093     1.179 r  inst_3/Onet (fo=1, unplaced)         0.584     1.763    wire_6FDRE                                         r  inst_8/Cclock pessimism              0.000     1.763clock uncertainty            0.035     1.799FDRE (Hold_fdre_C_D)         0.115     1.914    inst_8

                   required time                         -1.914//同一寄存器inst_8完成从D到Q的数据传输后的-1.914sarrival 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_bPath Type:              Max at Slow Process CornerRequirement:            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.000nsClock 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.000nsClock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PETotal System Jitter     (TSJ):    0.071nsTotal Input Jitter      (TIJ):    0.000nsDiscrete Jitter          (DJ):    0.000nsPhase Error              (PE):    0.000nsLocation             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)-------------------------------------------------------------------    -------------------(clock clk_b rise edge)      5.000     5.000 r0.000     5.000 r  clk_b (IN)net (fo=0)                   0.000     5.000    clk_bIBUF (Prop_ibuf_I_O)         0.620     5.620 r  inst_4/Onet (fo=1, unplaced)         0.466     6.086    wire_1 BUFG (Prop_bufg_I_O)         0.093     6.179 r  inst_5/Onet (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/Qnet (fo=2, unplaced)         0.466     7.453    q3_OBUFOBUF (Prop_obuf_I_O)         2.117     9.569 r  inst_1/Onet (fo=0)                   0.000     9.569    data_outr  data_out (OUT)
-------------------------------------------------------------------    -------------------(clock clk_b rise edge)     25.000    25.000 r clock pessimism              0.000    25.000 clock uncertainty           -0.035    24.965output delay                -3.000    21.965-------------------------------------------------------------------required time                         21.965arrival 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_bIBUF (Prop_ibuf_I_O)         0.126     5.126 r  inst_4/Onet (fo=1, unplaced)         0.231     5.358    wire_1BUFG (Prop_bufg_I_O)         0.026     5.384 r  inst_5/Onet (fo=2, unplaced)         0.114     5.498    wire_7FDRE                                         r  inst_9/C

                      FDRE (Prop_fdre_C_Q)         0.100     5.598 r  inst_9/Qnet (fo=1, unplaced)         0.094     5.692    wire_4FDRE                                         r  inst_10/D

                      (clock clk_b rise edge)      5.000     5.000 r0.000     5.000 r  clk_b (IN)net (fo=0)                   0.000     5.000    clk_bIBUF (Prop_ibuf_I_O)         0.293     5.293 r  inst_4/Onet (fo=1, unplaced)         0.243     5.536    wire_1BUFG (Prop_bufg_I_O)         0.030     5.566 r  inst_5/Onet (fo=2, unplaced)         0.259     5.825    wire_7FDRE                                         r  inst_10/Cclock 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 最大延迟分析;=setupRequirement:            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.000nsOutput Delay:           2.000nsClock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PETotal System Jitter     (TSJ):    0.071nsTotal Input Jitter      (TIJ):    0.000nsDiscrete Jitter          (DJ):    0.000nsPhase Error              (PE):    0.000nsLocation             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_inIBUF (Prop_ibuf_I_O)         0.620     2.620 r  inst_0/Onet (fo=2, unplaced)         0.466     3.086    d1_OBUFOBUF (Prop_obuf_I_O)         2.034     5.120 r  d1_OBUF_inst/Onet (fo=0)                   0.000     5.120    d1r  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.xdnf.cn/news/1486668.html

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

相关文章

centos系统mysql主从复制(一主一从)

文章目录 mysql80主从复制(一主一从)一、环境二、服务器master1操作1.开启二进制日志2. 创建复制用户3. 服务器 slave1操作4. 在主数据库中添加数据 mysql80主从复制(一主一从) 一、环境 准备两台服务器,都进行以下操…

linux系统安装python3和pip

一、安装python 1、安装依赖环境 yum install gcc -y yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install zlib zlib-devel openssl -y yum install openssl…

Qt源码交叉编译带openssl的Qt版本

一.背景 近期项目由于对接的后台服务是https的,之前交叉编译的Qt是不带openssl的,为了能支持https,必须要重新编译Qt。 二.环境 环境准备: Ubuntu版本 :18.04; openssl 版本:1.1.1.g&#xff1b…

vscode 搭建 golang 开发环境

介绍 在 vscode 搭建 go 的开发环境需要区分两个方向: go 1.19.0 及其更高版本go 1.19.0 之前的版本 为什么这么分,因为 vscode-go 插件自带的工具安装脚本全部都是装最新版的各类工具,这些工具中有部分要求 go 1.19.0 以上才能安装成功。…

手写RPC-令牌桶限流算法实现,以及常见限流算法

为什么需要服务限流、降级 分布式架构下,不同服务之间频繁调用,对于某个具体的服务而言,可能会面临高并发场景。在这样的情况下,提供服务的每个服务节点就都可能由于访问量过大而引起一系列问题,比如业务处理耗时过长、…

SpringBoot把nacos配置注入时数据注入时出现莫名错误

一、错误详情 我在nacos的配置a是003457 但是注入的数据是1839 二、解决方法 通过加号可以解决这个问题: 数据正确了:

【BUG】已解决:SyntaxError: invalid syntax

SyntaxError: invalid syntax 目录 SyntaxError: invalid syntax 【常见模块错误】 【解决方案】 常见原因及解决方法 解决步骤 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职…

Ubuntu22.04离线安装nginx

下载安装包 nginx nginx下载地址,选stable的即可,传到服务器上面,记住上传路径 提示: 下面的openssl,zlib,pcre也可以不下载也可以,我这里是考虑到完全离线下载的情况openssl 这个是https需要弄得,如果生产…

【JavaScript】箭头函数

具体讲解 之前写 this 的指向时就提到过箭头函数,但是由于其比较复杂,还是单独开一篇来讲箭头函数。 箭头函数,箭头函数不能作为构造函数,没有原型 prototype,不能 new。 在箭头函数中,this 关键字指向的是…

MMROTATE的混淆矩阵confusion matrix生成

mmdetection中加入了混淆矩阵生成并可视化的功能,具体的代码在tools/analysis_tools/confusion_matrix.py。 mmrotate由于主流遥感数据集中的DOTA数据集标注格式问题,做了一些修改,所以我们如果是做遥感图像检测的Dota数据集的混淆矩阵&…

C:图案打印

引言 本篇文章讲了一些常见的图形编程题&#xff0c;并总结了一些规律。 1、打印空心正方形 1.1 代码展示&#xff1a; #include<stdio.h> int main() {int a 0;//边长初始化scanf("%d", &a);//输入边长的值{int i 0;for (i 0; i < a; i)//控制行…

数据结构C++——优先队列

文章目录 一、定义二、ADT三、优先队列的描述3.1 线性表3.2 堆3.2.1 最大堆的ADT3.2.2 最大堆的插入3.2.3 最大堆的删除3.2.4 最大堆的初始化3.3 左高树 LT3.3.1 高度优先左高树HBLT3.3.2 重量优先左高树WBLT3.3.3 最大HBLT的插入3.3.4 最大HBLT的删除3.3.5 合并两棵最大HBLT3.…

京东商品详情API返回值:商品ID与标题解析

京东商品详情API是京东电商平台提供的一个接口&#xff0c;用于获取商品的详细信息&#xff0c;包括商品ID、商品标题、价格、库存等。然而&#xff0c;需要注意的是&#xff0c;直接访问和使用京东的商品详情API通常需要符合京东的开放平台规则&#xff0c;并可能需要注册成为…

OpenCV 卷积操作 均值,高斯,中值滤波 图片降噪

文章目录 卷积概念卷积的作用1. 图像平滑与去噪2. 边缘检测3. 特征提取4. 图像增强 常见的三种滤波均值滤波均值滤波的步骤优点和缺点使用示例 高斯滤波示例代码 中值滤波中值滤波的基本原理数学表达式中值滤波的步骤示例优点和缺点使用示例 三种滤波 图片降噪 Python实现 卷积…

redis高可用之主从复制、哨兵以及Cluster集群

目录 一、Redis主从复制 1&#xff09;主从复制的作用 2&#xff09;主从复制流程 3&#xff09;搭建Redis主从复制 1、部署redis服务器 2、修改Redis配置文件&#xff08;所有节点操作&#xff09; 3、验证主从复制结果 二、哨兵模式 1&#xff09;哨兵的作用 2&…

设计模式-领域逻辑模式-SQL的分离

尽管SQL已经在商业软件中广泛应用&#xff0c;但它在使用中还存在一定缺陷 许多应用程序开发者不能充分理解SQL&#xff0c;同时很多习惯用SQL的开发人员又可能组织不好程序代码。尽管现在有很多技术可以把SQL封装在程序里&#xff0c;但大多封装的还很牵强。 SQL分离的思路&…

谷粒商城实战笔记-46-商品服务-API-三级分类-配置网关路由与路径重写

文章目录 一&#xff0c;准备工作1&#xff0c;新增一级菜单2&#xff0c;新增二级菜单 二&#xff0c;前端树形界面开发1&#xff0c;开发分类展示组件 三&#xff0c;远程调用接口获取商品分类数据1&#xff0c;远程调用2&#xff0c;路由配置 错误记录 本节的主要内容&#…

Cisco ISR 2代路由器,1900,2900,3900系列RTU License使用方法

1 情况说明 客户处的2台Cisco 2911要开启ip sla ,但发现无法支持&#xff0c;查询得知需要有data license才可以。可以通过开启RTU license激活。开启RTU后正常. 2 操作方法 License种类如下&#xff1a;  ipbase ipbasek9 Permanent ipbasek9  security securityk9 Eva…

C++【new delete】【operator new operator delete】

目录 数据段存储位置的小复习 new 和 delete operator new 和 operator delete new和delete调用operator new和operator delete new [ ] 和 delete [ ]的原理 数据段存储位置的小复习 全局变量和静态变量都在静态区&#xff0c;也称数据段 全局变量int x 0 和 全局静态变…

全网最实用--神经网络各个组件以及效率指标 (含代码助理解,粘贴即用)

文章目录 一、神经网络相关组件0.前奏1.全连接层&#xff08;Fully Connected Layer, FC&#xff09;/密集层&#xff08;Dense Layer&#xff09;:2.卷积层&#xff08;Convolutional Layer, Conv&#xff09;:a.一维卷积b.二维卷积c.分组卷积 3.池化层&#xff08;Pooling La…