【时序约束】读懂用好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.mzph.cn/web/48234.shtml

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

相关文章

定时器+外部中断实现NEC红外线协议解码

一、前言 1.1 功能介绍 随着科技的进步和人们生活水平的提高,红外遥控器已经成为了日常生活中不可或缺的电子设备之一,广泛应用于电视、空调、音响等多种家电产品中。 传统的红外遥控器通常只能实现预设的有限功能,无法满足用户对设备更加智…

TCP客户端connect断线重连

文章目录 TCP客户端connect断线重连1、为什么要断线重连2、实现代码 TCP客户端connect断线重连 1、为什么要断线重连 客户端会面临服务器崩溃的情况,我们可以试着写一个客户端重连的代码,模拟并理解一些客户端行为,比如游戏客户端等. 考虑到…

实战篇(十二):如何使用 Processing 创建一个多功能的简易吃豆人游戏

如何使用 Processing 创建一个多功能的简易吃豆人游戏 文章目录 如何使用 Processing 创建一个多功能的==简易==吃豆人游戏引言准备工作第一步:设置基本框架第二步:创建 Pacman 类第三步:创建 Obstacle 类第四步:添加分数系统第五步:运行游戏完整代码结论参考资料引言 吃…

STL常用算法——常用查找算法

自定义类型都要用仿函数判断 1.find() class Person { public:Person(string name,int age){this->m_Name name;this->m_Age age;}bool operator(const Person &p)//重载operator{if (this->m_Name p.m_Name && this->m_Age p.m_Age){return true;…

NVIDIA 全面转向开源 GPU 内核模块

NVIDIA 全面转向开源 GPU 内核模块 文章目录 NVIDIA 全面转向开源 GPU 内核模块支持的 GPU安装程序更改使用带有 CUDA 元包的包管理器 使用运行文件使用安装帮助脚本包管理器详细信息dnf:Red Hat Enterprise Linux、Fedora、Kylin、Amazon Linux 或 Rocky Linuxzypp…

网络安全等级保护:什么是网络安全等级保护?(非常详细)零基础入门到精通,收藏这一篇就够了

关键词: 网络安全等级保护 等级保护 网络 信息系统 旧话重提,一直以来,我们不断强调“等级保护”制度是我国的网络安全领域的基本制度、基本策略和基本方法,是促进信息化健康发展,维护国家安全、社会秩序和公共利益的…

数字图像处理中的常用特殊矩阵及MATLAB应用

一、前言 Matlab的名称来源于“矩阵实验室(Matrix Laboratory)”,其对矩阵的操作具有先天性的优势(特别是相对于C语言的数组来说)。在数字图像处理中,为了提高编程效率,我们可以使用多种方式来创…

Mysql数据库和Sql语句

数据库管理: sql语句:数据库用来增删改查的语句(重要) 备份:数据库的数据进行备份 主从复制、读写分离、高可用(重要) Mysql数据库和Sql语句 一、Mysql数据库 1、数据库:组织、…

Java基础(四) 内部类详解

Java 内部类详解 一. 内部类概述 内部类是嵌套在类内部进行定义的类,其外部的类则被称为外部类;按照内部类的定义位置,内部类可进一步划分为成员内部类、静态内部类、局部内部类和匿名内部类四种类型。内部类的出现实际上是进一步丰富了类的…

Modbus转BACnet/IP网关的技术实现与应用

引言 随着智能建筑和工业自动化的快速发展,不同通信协议之间的数据交换也变得日益重要。Modbus和BACnet/IP是两种广泛应用于自动化领域的通信协议,Modbus以其简单性和灵活性被广泛用于工业自动化,而BACnet/IP则在楼宇自动化系统中占据主导地…

Android APP 音视频(03)CameraX预览与MediaCodec编码

说明: 此CameraX预览和编码实操主要针对Android12.0系统。通过CameraX预览获取yuv格式数据,将yuv格式数据通过mediacodec编码输出H264码流(使用ffmpeg播放),存储到sd卡上。 1 CameraX 和 MediaCodec简介 1.1 CameraX…

“微软蓝屏”事件,给IT行业带来的宝贵经验和教训

“微软蓝屏”事件是指2024年7月19日发生的一次全球性技术故障,主要涉及微软视窗(Windows)操作系统及其相关应用和服务。 以下是对该事件的详细解析: 一、事件概述 发生时间:2024年7月19日事件影响:全球多个…

【科学文献计量】中国知网(CNKI) 文献素材库生成软件详细使用说明

CNKI 文献素材库生成软件制作 1 背景2 使用步骤2.1 文献检索2.2 文献导出2.3 软件生成1 背景 在进行中文文献的综述时,往往是要借助中国知网(CNKI)文献检索平台,写作插入文献时会用Endnote软件进行辅助。因此就有需求:对于CNKI检索的结果直接导出到本地,第一是方便快速阅…

基于STM32的农业大棚温湿度采集控制系统的设计

目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是智能教室。 设备的详细功能见网盘中的文章《8、基…

“机器说人话”-AI 时代的物联网

万物互联的物联网愿景已经提了许多年了,但是实际效果并不理想,除了某些厂商自己的产品生态中的产品实现了互联之外,就连手机控制空调,电视机和调光灯都没有实现。感觉小米做的好一点,而华为的鸿蒙的全场景,…

C#+layui+echarts实现动态生成折线图

概要 C#layuiecharts实现动态生成折线图 整体架构流程 后端是c#语言编写的业务流程,前端是layui和echarts 技术细节 1.先看echarts折线图需要什么样子的数据,在想后端怎么处理 2.后端代码 List<ValveTempData> list new List<ValveTempData>(); string …

Docker容器逃逸漏洞-CVE-2024-21626

Snyk 在 Docker 引擎以及其他容器化技术(例如 Kubernetes)使用的 runc <=1.1.11 的所有版本中发现了一个漏洞。利用此问题可能会导致容器逃逸到底层主机操作系统,无论是通过执行恶意映像还是使用恶意 Dockerfile 或上游映像构建映像(即使用时FROM) CVE-2024-21626原理…

生成式人工智能之路,从马尔可夫链到生成对抗网络

人工智能&#xff08;Artificial intelligence&#xff0c;AI&#xff09;技术在过去几年中取得了显著进展&#xff0c;其中生成式AI&#xff08;Generative AI&#xff09;因其强大的内容生成能力而备受关注。生成式AI可以创建新的文本、图像、音频、视频、代码以及其他形式的…

SSRF学习笔记

1.NAT学习 Nat&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是 一种网络通信技术主要用于将私有网络中的内部IP地址转换成公共网络中的公共IP地址&#xff0c;以实现局域网内部设备访问互联网的功能。具体来说&#xff0c;Nat有以下几个主要…

Matlab画不同指标的对比图

目录 一、指标名字可修改 二、模型名字可修改 三、输入数据可修改 软件用的是Matlab R2024a。 clear,clc,close all figure1figure(1); % set(figure1,Position,[300,100,800,600],Color,[1 1 1]) axes1 axes(Parent,figure1);%% Initialize data points 一、指标名字可修…