在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 30291|回复: 50

[求助] 已解决-DC与PT的时序分析差异,请帮我分析

[复制链接]
发表于 2011-12-14 18:27:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 haier822 于 2012-2-9 14:58 编辑

我在做完PT后,查看建立时间分析,对于同一路径,发现和DC报出的情况有很大差别,是不是由于PT更精确造成的差别,还是PT和DC两者的分析方法上有差别,在脚本中,PT中的相关约束设置和DC中的是一致的。通过对比,特别是器件的transition time差别较大会造成Increase time 变大,而且最后的library setup time,DC中的要比PT中的大很多,具体看下面的:

PT后setup time
Startpoint: tg_if_pif_cmd_reg_7_
               (rising edge-triggered flip-flop clocked by CK)
  Endpoint: tg_if_sif_data_reg_1_
               (rising edge-triggered flip-flop clocked by CK)
  Path Group: CK
  Path Type: max

  Point                       Fanout    Cap      Trans       Incr       Path
  -----------------------------------------------------------------------------
  clock CK (rise edge)                            0.40       0.00      0.00
  clock network delay (ideal)                               3.00       3.00
  tg_if_pif_cmd_reg_7_/CK (DFQRM2)   0.40       0.00       3.00 r
  tg_if_pif_cmd_reg_7_/Q (DFQRM2)     0.49       0.57       3.57 f
  tg_if_pif_cmd_7_ (net)   4     0.22
  U3001/Z (INVM4)                                0.80       0.53       4.10 r
  n4327 (net)                    5     0.29
  U4823/Z (ND4M2)                                0.66       0.33       4.43 f
  n1239 (net)                    2     0.12
  U3085/Z (ND2M4)                                0.99       0.68       5.11 r
  n4581 (net)                    6     0.35
  U4152/Z (CKINVM2)                            0.83       0.61       5.72 f
  n4292 (net)                    3     0.17
  U2926/Z (NR2M1)                               0.98       0.62       6.34 r
  n3124 (net)                    1     0.06
  U3133/Z (OAI21M4)                           0.54       0.32       6.65 f
  tg_if_pif_next_rdlh (net) 4     0.23
  U3307/Z (OR2M8)                              0.46       0.45       7.11 f
  n2876 (net)                   12     0.79
  U2724/Z (NR2M6)                              1.09       0.64       7.74 r
  n2262 (net)                    8     0.43
  U2911/Z (AOI222M1)                         0.51       0.38       8.12 f
  n2283 (net)                    1     0.05
  U4837/Z (ND4M1)                              0.73       0.52       8.64 r
  n2274 (net)                    1     0.06
  U4836/Z (NR2M2)                              0.40       0.29       8.93 f
  n1202 (net)                    2     0.11
  U4821/Z (OAI22B10M0)                     1.11       0.65       9.58 r
  tg_if_sif_next_data[1] (net)
                                 1     0.05
  tg_if_sif_data_reg_1_/D (DFQRM2)   1.11       0.00       9.58 r
  data arrival time                                                            9.58

  clock CK (rise edge)                             0.40      20.00      20.00
  clock network delay (ideal)                                 3.00      23.00
  clock uncertainty                                                -0.10      22.90
  tg_if_sif_data_reg_1_/CK (DFQRM2)                                22.90 r
  library setup time                                               -0.74      22.16
  data required time                                                           22.16
  -----------------------------------------------------------------------------
  data required time                                                          22.16
  data arrival time                                                             -9.58
  -----------------------------------------------------------------------------
  slack (MET)                                                                     12.58

DC中的transition time都要比PT中大出2倍,这是什么原因呢?
DC后setup_timing
Startpoint: tg_if/pif/cmd_reg[7]
              (rising edge-triggered flip-flop clocked by CK)
  Endpoint: tg_if/sif/data_reg[1]
            (rising edge-triggered flip-flop clocked by CK)
  Path Group: CK
  Path Type: max

  Des/Clust/Port     Wire Load Model       Library
  ------------------------------------------------
  tango_fhv_digital  wl50                  l180hv_wc

  Point                        Fanout       Cap     Trans      Incr       Path
  -------------------------------------------------------------------------------
  clock CK (rise edge)                                             0.00       0.00
  clock network delay (ideal)                                  3.00       3.00
  tg_if/pif/cmd_reg[7]/CK (DFQRM2)          0.40      0.00       3.00 r
  tg_if/pif/cmd_reg[7]/Q (DFQRM2)            1.08      1.42       4.42 f
  tg_if/pif/cmd[7] (net)      4         0.22                    0.00       4.42 f
  U3001/Z (INVM4)                                    1.76      1.25       5.68 r
  n4327 (net)                    5         0.29                  0.00       5.68 r
  U4823/Z (ND4M2)                                    1.70      1.09       6.77 f
  n1239 (net)                    2         0.12                   0.00       6.77 f
  U3085/Z (ND2M4)                                    2.23      1.69       8.45 r
  n4581 (net)                    6         0.34                   0.00       8.45 r
  U4152/Z (CKINVM2)                                  1.91      1.61      10.06 f
  n4292 (net)                    3         0.17                    0.00      10.06 f
  U2926/Z (NR2M1)                                    2.32      1.65      11.71 r
  n3124 (net)                    1         0.06                    0.00      11.71 r
  U3133/Z (OAI21M4)                                  1.28      1.01      12.72 f
  tg_if/pif/next_rdlh (net)      4         0.23                  0.00      12.72 f
  U3307/Z (OR2M8)                                    1.00      1.13      13.84 f
  n2876 (net)                   12         0.77                   0.00      13.84 f
  U2724/Z (NR2M6)                                    2.56      1.57      15.41 r
  n2262 (net)                    8         0.43                   0.00      15.41 r
  U2911/Z (AOI222M1)                                 1.30      1.23      16.64 f
  n2283 (net)                    1         0.05                     0.00      16.64 f
  U4837/Z (ND4M1)                                    1.69      1.35      17.99 r
  n2274 (net)                    1         0.06                    0.00      17.99 r
  U4836/Z (NR2M2)                                    0.90      0.82      18.81 f
  n1202 (net)                    2         0.11                   0.00      18.81 f
  U4821/Z (OAI22B10M0)                          2.74      1.74      20.55 r
  tg_if/sif/next_data[1] (net)
                                         1         0.05                    0.00      20.55 r
  tg_if/sif/data_reg[1]/D (DFQRM2)             2.74      0.00      20.55 r
  data arrival time                                                                 20.55

  clock CK (rise edge)                                              20.00      20.00
  clock network delay (ideal)                                    3.00      23.00
  clock uncertainty                                                  -0.10      22.90
  tg_if/sif/data_reg[1]/CK (DFQRM2)                        0.00      22.90 r
  library setup time                                                  -2.19      20.71
  data required time                                                               20.71
  -------------------------------------------------------------------------------
  data required time                                                              20.71
  data arrival time                                                                -20.55
  -------------------------------------------------------------------------------
  slack (MET)                                                                          0.15

请帮我分析下,谢谢!
发表于 2011-12-14 21:23:03 | 显示全部楼层
set_max_transition ?
发表于 2011-12-14 21:59:33 | 显示全部楼层
记得有个命令可以显示工具是怎么计算迟延信息的,具体可以查一下manual。
怀疑是不是pvt条件不一样。
发表于 2011-12-14 23:28:18 | 显示全部楼层
发表于 2011-12-15 09:15:22 | 显示全部楼层
这个相差太离谱了,一定是哪里有问题。
wire load model,SDF,netlist都一样吗?
 楼主| 发表于 2011-12-15 17:05:39 | 显示全部楼层

DC与PT的时序分析差异,紧急求助

本帖最后由 haier822 于 2012-2-13 13:16 编辑

回复 5# 陈涛


    谢谢。
我用report_delay_calculation观察了上面路径中的U3001 cell的情况,在PT和DC后做了对比,发现在建立时间的计算上,PT并没有用WC库,而是用BC库(具体为l180hv_bc.db),这不应该啊,为什么没有用WC库呢? 在pt.log中,report_design报出的信息也是正确的。

PT中:
pt_shell: report_delay_calculation -from U3001/A -to U3001/Z -max

****************************************
Report : delay_calculation
Design : digital
Version: D-2010.06-SP3
Date   : Thu Dec 15 16:24:57 2011
****************************************

From pin: U3001/A
To pin:   U3001/Z
Main Library Units:  1ns  1pF  1kOhm

Library: 'l180hv_bc'
Library Units:  1ns  1pF  1kOhm
Library Cell: 'INVM4'
arc sense:                       negative_unate
arc type:                        cell
Units:  1ns  1pF  1kOhm


Rise Delay

   cell delay = 0.528087
     Table is indexed by
      (X) input_pin_transition = 0.490917
      (Y) output_net_total_cap = 0.29215
     
------省略
  Cell Delay
  rise:  0.528087
  fall:  0.384058
------省略
Rise delay = 0.528087
Fall delay = 0.384058

Rise transition = 0.803341
Fall transition = 0.546333

DC中:
dc_shell: report_delay_calculation -from U3001/A -to U3001/Z -max
****************************************
Report : delay_calculation
Design : tango_fhv_digital
Version: D-2010.03-SP1
Date   : Thu Dec 15 16:24:37 2011
****************************************

From pin:                         U3001/A
To pin:                           U3001/Z
Main Library Units:  1ns  1pF  1kOhm


Operating Conditions: l180hv_wc   Library: l180hv_wc
Wire Load Model Mode: top

Design        Wire Load Model            Library
------------------------------------------------
digital      wl50              l180hv_wc

Library: 'l180hv_wc'
Library Units:  1ns  1pF  1kOhm
Library Cell: 'INVM4'

arc sense:                        negative_unate
arc type:                         cell


Rise Delay

   cell delay = 1.25191
     Table is indexed by
      (X) input_pin_transition = 1.0817
      (Y) output_net_total_cap = 0.287982
     Relevant portion of lookup table:
                   (X)  0.6704      (X)  1.2169
  (Y)  0.1754      (Z)  0.7772      (Z)  0.9732
  (Y)  0.2941      (Z)  1.1090      (Z)  1.3226

     Z = A + B*X + C*Y + D*X*Y
     A =  0.0785           B =  0.3108
     C =  2.6125           D =  0.2723

  Z = 1.25191
  scaling result for operating conditions
  multiplying by 1 gives 1.25191

Fall Delay

   cell delay = 1.07996
     Table is indexed by
      (X) input_pin_transition = 2.45819
      (Y) output_net_total_cap = 0.287982
     Relevant portion of lookup table:
                   (X)  1.9917      (X)  3.0009
  (Y)  0.1754      (Z)  0.7625      (Z)  0.9187
  (Y)  0.2941      (Z)  0.9992      (Z)  1.2028

     Z = A + B*X + C*Y + D*X*Y
     A =  0.2432           B =  0.0851
     C =  1.2040           D =  0.3966

  Z = 1.07996
  scaling result for operating conditions
  multiplying by 1 gives 1.07996

  Cell Delay
  rise:  1.25191
  fall:  1.07996
Transition calculations


  Transition rise
   transition = 1.75641
     Table is indexed by
      (X) input_pin_transition = 1.0817
      (Y) output_net_total_cap = 0.287982
     Relevant portion of lookup table:
                   (X)  0.6704      (X)  1.2169
  (Y)  0.1754      (Z)  1.0927      (Z)  1.2108
  (Y)  0.2941      (Z)  1.7165      (Z)  1.8112

     Z = A + B*X + C*Y + D*X*Y
     A = -0.0167           B =  0.2796
     C =  5.4982           D = -0.3619

  Z = 1.75641
  scaling result for operating conditions
  multiplying by 1 gives 1.75641


  Transition fall
   transition = 1.22039
     Table is indexed by
      (X) input_pin_transition = 2.45819
      (Y) output_net_total_cap = 0.287982
     Relevant portion of lookup table:
                   (X)  1.9917      (X)  3.0009
  (Y)  0.1754      (Z)  0.8595      (Z)  1.0576
  (Y)  0.2941      (Z)  1.1342      (Z)  1.3525

     Z = A + B*X + C*Y + D*X*Y
     A =  0.1215           B =  0.1667
     C =  1.9778           D =  0.1688

  Z = 1.22039
  scaling result for operating conditions
  multiplying by 1 gives 1.22039
**********这里看到pt在分析建立时间的时候用的库不对,应该用WC库才对。各个方面我都做了检查,在pt脚本中没发现异常。其中部分脚本:

set search_path   [list  /data1/lib_all/l180hv_lib]
set link_path     [list {*} l180hv_bc.db l180hv_typ.db l180hv_wc.db]

#-------------------------------------------------------
#read files
set active_design  digital
read_verilog ./syn_netlist/$active_design.v
current_design $active_design

#--------------------------------------------------------
#environment conditions
set_operating_conditions -min l180hv_bc -min_library l180hv_bc -max l180hv_wc -max_library l180hv_wc
set_wire_load_model -name "wl50" -library l180hv_wc -max
set_wire_load_model -name "wl10" -library l180hv_wc -min
set_wire_load_mode top

***************看了一下log文件,没有error。部分为:
Loading verilog file '/data1/hli/hv_prj/sta/post-dc/syn_netlist/digital.v'
Warning: Design 'digital_DW01_inc_0' (file '/data1/hli/hv_prj/sta/post-dc/syn_netlist/digital.v')
        is already registered. Remove the design before rereading. (DBR-003)
Information: Inferring 1 clock-gating checks. (PTE-017)
Information: Checking 'no_input_delay'.
Information: Checking 'no_driving_cell'.
     ——————省略部分
Design Attribute                         Value
---------------------------------------------------------------------------
Operating Conditions:
  analysis_type                          on_chip_variation
operating_condition_min_name           l180hv_bc  //这里指向的lib是bc,正确。
  process_min                            1
  temperature_min                        -40
  voltage_min                            1.98
  tree_type_min                          balanced_case

  operating_condition_max_name           l180hv_wc //这里指向的lib是wc,正确。
  process_max                            1
  temperature_max                        125
  voltage_max                            1.62
  tree_type_max                          balanced_case

Wire Load:                               (use report_wire_load for more information)
  wire_load_mode                         top
  wire_load_model_max                    wl50
  wire_load_model_library_max            l180hv_wc
  wire_load_selection_type_max           user-specified
  wire_load_model_min                    wl10
  wire_load_model_library_min            l180hv_wc
  wire_load_selection_type_min           user-specified
  wire_load_selection_group_max          --
  wire_load_selection_group_min          --
  wire_load_min_block_size               0

Design Rules:
  max_capacitance                        --
  min_capacitance                        --
  max_fanout                             --
  max_transition                         --
  max_area                               --

Timing Ranges:
  early_factor                           --
  late_factor                            --

Pin Input Delays:
None specified.

Pin Output Delays:
None specified.
Fast Analysis:                           disabled

现在看pt用了bc库去分析setup time了,所以同一路径要比dc分析出来的arrive time要小很多。我自己不懈努力还是没有查出具体原因,请大家帮我分析分析,非常感谢!
发表于 2011-12-15 18:40:03 | 显示全部楼层
要么ocv啊, 要么bc-wc啊, 别两个搞混了,

你用了 set_operating_condition -analysis_type XXXX  么, 缺省是ocv模式,

单独搞个link library, 用ocv single corner做吧, 这样比较简单,

如 set link_path { *   wc.db }   ----------- for  max setup check
  set link_path  { *  bc.db }  --------------  for  min hold check ,
发表于 2011-12-15 20:39:39 | 显示全部楼层
kanbudong
 楼主| 发表于 2011-12-15 21:53:14 | 显示全部楼层
本帖最后由 haier822 于 2012-1-13 16:06 编辑

非常感谢你的指导!
还是我对PT的认识还不够,做完DC,就将DC中的脚本改动了一些作为PT的脚本,大部分感觉是一样的,特别是link_path这里,没有追究它与DC link_lib的区别。通过这个问题我对PT的认识更加清楚一些。特别是PT分析中存在三种分析模式:single, bc_wc, OCV。为了节省时间PT可以进行bc_wc或者OCV的分析,同时分析出min delay 和max delay,前提要告诉PT分析min delay和max delay指定对应的lib(best-case lib 和worst-case lib)。之前我的问题是没有为PT分析min delay和max delay指明相应的lib,虽然在脚本中也写到:set_operating_conditions -min l180hv_bc -min_library l180hv_bc -max l180hv_wc -max_library l180hv_wc。但是link_path的对象不对,只能是worst-case lib,还有缺少了set_min_delay,该命令主要是在两种库之间建立max/min的关系,为后面PT同时进行min delay和max delay分析做好库的准备。对于PT的delay分析过程,PT的手册中说到:PrimeTime first checks the library cell in the maximum library, and then looks in the minimum library to see if a match exists. If a library cell with the same name, the same pins, and the same timing arcs exists in the minimum library, PrimeTime uses that timing information for minimum analysis.
现在正确的脚本如下:
set search_path   [list  /data1/lib_all/l180hv_lib]
set link_path     [list {*} l180hv_wc.db]

#-------------------------------------------------------
#read files
set active_design  digital
read_verilog ./syn_netlist/$active_design.v
current_design $active_design

#--------------------------------------------------------
#environment conditions
set_min_library l180hv_wc.db -min_version l180hv_bc.db
set_operating_conditions -min l180hv_bc -min_library l180hv_bc -max l180hv_wc -max_library l180hv_wc
set_wire_load_model -name "wl50" -library l180hv_wc -max
set_wire_load_model -name "wl10" -library l180hv_wc -min
set_wire_load_mode top
------
------

这样PT分析的结果就和DC一致了。
另外PT根据上面的脚本分配给set_operating_conditions 分析模式为BC_WC(user guide中提到在set_operating_conditions 用到-min,-max,那么默认模式就是BC-WC),但是它的推荐模式为OCV。因为我试过加上-analysis_type bc_wc,PT会报出warning,BC_WC模式将在未来的版本中取消。原句:Warning: The BC_WC ananlysis mode will be phased out in future releases. (PT-009)
原因是BC_WC分析不够精确,没有覆盖最悲观的情况。
后面还是要深入的研读手册。
自己做个小结,也让其他同仁从中避免此种问题。

补充内容 (2020-7-29 12:21):
只能是worst-case lib,还有缺少了set_min_delay---这句有输入手误,set_min_delay 改为set_min_library
发表于 2011-12-20 21:22:07 | 显示全部楼层
很详细,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-8 22:36 , Processed in 0.045588 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表