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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13143|回复: 12

[求助] PT报告时序遇到问题,求助!

[复制链接]
发表于 2011-5-25 11:12:59 | 显示全部楼层 |阅读模式
80资产
本帖最后由 zp_xd 于 2011-5-25 11:16 编辑

我用Astro做完PR后,导出层次化的门级网表和SDF文件用于PrimeTime做时序分析,但PT报出的timing让我很郁闷:
****************************************
Report : timing
        -path full
        -delay max
        -max_paths 1
Design : encoder
Version: W-2004.12-SP1
Date   : Wed May 25 10:18:25 2011
****************************************

  Startpoint: ISB_encoder_level_two_inst_1__unit_adder_lead_five_two_r_sum_piple_three_reg_1_
               (rising edge-triggered flip-flop clocked by clk)
  Endpoint: ISB_encoder_level_three_inst_3__unit_adder_lead_four_two_r_lead_carry_three_reg
               (rising edge-triggered flip-flop clocked by clk)
  Path Group: clk
  Path Type: max
  Point                                                       Incr       Path
  ------------------------------------------------------------------------------
  clock clk (rise edge)                                   0.00       0.00
clock network delay (propagated)         0.61 *    0.61
  ISB_encoder_level_two_inst_1__unit_adder_lead_five_two_r_sum_piple_three_reg_1_/CK (DFFHX8M)
                                                                 0.00       0.61 r
  ISB_encoder_level_two_inst_1__unit_adder_lead_five_two_r_sum_piple_three_reg_1_/Q (DFFHX8M)
                                                                 0.12 *     0.72 f
  U727/Y (NOR2BX8M)                                 0.06 *     0.78 f
  U717/Y (CLKAND2X12M)                            0.06 *     0.84 f
  ISB_encoder_level_three_inst_3__unit_adder_lead_four_two_r_lead_carry_three_reg/RN (DFFTRX2M)
                                                                 0.00 *     0.84 f
  data arrival time                                                       0.84


  clock clk (rise edge)                                    0.80       0.80
  clock network delay (propagated)          0.28 *     1.08
  clock uncertainty                                        -0.03       1.05
  ISB_encoder_level_three_inst_3__unit_adder_lead_four_two_r_lead_carry_three_reg/CK (DFFTRX2M)
                                                                                1.05 r
  library setup time                                       -0.12 *     0.93
  data required time                                                      0.93
  ------------------------------------------------------------------------------
  data required time                                                 0.93
  data arrival time                                                 -0.84
  ------------------------------------------------------------------------------
  slack (MET)                                                        0.09

大家注意到,上面两个时钟网络的延迟差得太多了!!  我用report_clock_timing -type skew命令报了skew,如下:

****************************************
Report : clock timing
        -type skew
        -nworst 1
        -setup
Design : encoder
Version: W-2004.12-SP1
Date   : Wed May 25 10:17:44 2011
****************************************
  Clock: clk
  Clock Pin                              Latency             Skew
----------------------------------------------------------------------------
  ISB_encoder_level_two_inst_0__unit_adder_lead_five_two_r_sum_piple_one_reg_3_/CK
                                               0.62                            rp-+
  ISB_encoder_level_two_inst_0__unit_adder_lead_five_two_r_sum_piple_two_reg_3_/CK
                                               0.28                0.34      rp-+

0.34ns!!! 这也太大了吧!  我做完PR后,用Astro报的skew如下:

======== Clock Global Skew Report ======================================
Clock: clk
Pin:   clk
Net:   clk
Operating Condition     = worst
The clock global skew   = 0.015
The longest path delay  = 0.289
The shortest path delay = 0.274

仅15ps而已,我做的这个模块很小,感觉这个值还比较符合实际。我想了很久都没找到为什么PT报出的那样的结果,感觉可能是SDF文件的问题,但是在导出SDF文件时并没有设置错啊,还有会不会是PT脚本有问题。还求高人解答,不胜感激!(下面附录中贴出我用PT分析时序时的脚本)


附:

#*************************************************************
# * this is the static timing analysis(STA) script for encoder_sim.v.
# * using the PrimeTime tool.
#*************************************************************
##################################################################
# below are parameters that you will want to set for the design
##################################################################
# list of all HDL files in the design
set myFiles [list encoder_sim.v]    ;# verilog or VHDL
set sdfFiles [list encoder.SDF]     ;# sdf
set myClk clk                       ;# The name of your clock
                     
# Timing and loading information   
set myPeriod_ns 0.8                 ;# desired clock period (in ns) (sets speed goal)
set myUncertainty_ns 0.03           ;# uncertainty of clock (in ns)
set myTransition_ns 0.08            ;# transition of clock (in ns)
set myInDelay_ns 0.30               ;# delay from clock to inputs valid
set myOutDelay_ns 0.30              ;# delay from clock to output valid
set myInputBuf INVX4M               ;# name of cell driving the inputs
set myLoadLibrary  ss_1v62_125c     ;# name of library the cell comes from
set myLoadPin A                     ;# name of pin that the outputs drive
##################################################################
# read the design data
##################################################################
set search_path "."                                  ;# set the search path
set link_path "* ./smic18m_library/ss_1v62_125c.db"  ;# set the link path
read_verilog $myFiles                      ;# read in the verilog files
# set and link the top design before reading in sdf file
current_design encoder
link_design
read_sdf $sdfFiles                        ;# read in the sdf file

##################################################################
# constrain the design
##################################################################
# set the clock attribute
create_clock -period $myPeriod_ns $myClk
set_propagated_clock [get_ports clk]
set_clock_uncertainty $myUncertainty_ns $myClk
set_clock_transition $myTransition_ns $myClk
# set the input and output delay relative to myClk         
set_input_delay $myInDelay_ns -clock $myClk [remove_from_collection [all_inputs] $myClk]
set_output_delay $myOutDelay_ns -clock $myClk [all_outputs]
##################################################################
# specify the environment and analysis conditions
##################################################################
# Set the driving cell for all inputs except the clock   
# The clock has infinite drive by default.
set_driving_cell  -library $myLoadLibrary -lib_cell $myInputBuf [remove_from_collection [all_inputs] $myClk]
# set the load of the circuit outputs in terms of the load
of the next cell that they will drive.   
set_load [load_of [format "%s%s%s%s%s" $myLoadLibrary "/" $myInputBuf "/" $myLoadPin]] [all_outputs]
set_false_path -from [get_ports set]
set_false_path -to [get_ports MSB_out_cp
set_false_path -to [get_ports MSB_out_cn
set_false_path -to [get_ports ISB_out_cp
set_false_path -to [get_ports ISB_out_cn
set_false_path -to [get_ports LSB_out_cp
set_false_path -to [get_ports LSB_out_cn

##################################################################
# report results
##################################################################
#report_constraint -all_violators
report_timing

最佳答案

查看完整内容

感觉你在PT中,设置了target_library=worst.db,并且set_min_library=best.的db,并且用了OCV的分析类型,这样的话,PT在检查setup是,lanuch_clock_path的delay用的是worst.db里面的数据,而capture_clock_path的delay用的是best.db里面的数据,从而造成skew比较大。 解决办法是:在PT中使用OCV的分析类型时,不要设置set_min_library,可以分两步来检查每条timing_path的setup和hold。首先,设置target_library=worst.db,并读入 ...
发表于 2011-5-25 11:13:00 | 显示全部楼层
感觉你在PT中,设置了target_library=worst.db,并且set_min_library=best.的db,并且用了OCV的分析类型,这样的话,PT在检查setup是,lanuch_clock_path的delay用的是worst.db里面的数据,而capture_clock_path的delay用的是best.db里面的数据,从而造成skew比较大。
解决办法是:在PT中使用OCV的分析类型时,不要设置set_min_library,可以分两步来检查每条timing_path的setup和hold。首先,设置target_library=worst.db,并读入worst.sdf文件,检查setup;然后重新启动PT,设置target_library=best.db,并读入best.sdf文件,检查hold。这样就该没问题了。
发表于 2011-5-25 12:27:23 | 显示全部楼层
LZ
有如下问题需要你来回答,
SDC是否一样?
Pt load的 SPEF/SDF是StarRC抽取出来的吗?如果是,那么Astro里头报Skew的时候,它看到的Timing信息是哪里来的,是Astro自带的Eng得到的否?
Astro与Pt直接的Timing Correlation你研究过否?
如上问题搞定,你的这个问题你自己就可以分析完成。
发表于 2011-5-25 16:38:07 | 显示全部楼层
学习了
 楼主| 发表于 2011-5-26 11:28:44 | 显示全部楼层
回复 2# apacheda


    1、PT的SDC约束跟DC综合时是一样的
    2、SDF文件不是用Star-RCXT提取的,而是从Astro里导出来的
    3、没研究过Astro与Pt直接的Timing Correlation。它的用来干嘛的?

这位兄弟帮忙解决下吧,感激不尽!
发表于 2011-5-26 11:48:05 | 显示全部楼层
回复 4# zp_xd

如果给PT 和Astro的 SDF and SDC是一样的,那么就是由于Pt跟Astro的Timing Corralation引起的。
在这2个Tool里头有有用同样的OCV的值吧 ?
LZ以PT报出来的结果为准。
 楼主| 发表于 2011-5-26 11:53:51 | 显示全部楼层
回复 5# apacheda


    1、你说的那个Timing Correlation 和OCV我都不太懂,你那有这方面资料么?
    2、并不是只有我上面贴出的关键路径的skew相差0.61-0.28=0.33ns,而是所有的路径都是这样!所以肯定PT报的不正常啊,这是咋回事?
发表于 2011-5-26 13:29:30 | 显示全部楼层
回复 6# zp_xd
Astro计算Timing的没有Pt准确,以Pt报出来的结果为准。
 楼主| 发表于 2011-5-27 12:08:50 | 显示全部楼层
回复 7# apacheda


   这个我知道啊,你没太明白我的意思。现在是PT报出来的明显不正常啊,不知问题出在哪?
发表于 2011-5-27 12:19:59 | 显示全部楼层
1)Astro算时序时,用的是自己内部的延迟?还是把那个生成的SDF再读回到Astro里面后,算时序?这两个的做法貌似相同,可能结果不一样。
2)如果Astro也是读入SDF再算时序的话,让Astro报下同样的path,逐条比较PT和Astro的延迟,比较容易发现问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-2-14 07:00 , Processed in 0.035947 second(s), 12 queries , Gzip On, Redis On.

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