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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: chenyueboy

[求助] primetime和design vision 里的时序分析

[复制链接]
发表于 2013-3-21 08:41:27 | 显示全部楼层
2楼说得对
发表于 2013-3-21 10:04:49 | 显示全部楼层
这就是一个工具的某一个功能,和一个专用工具的差别
发表于 2013-3-22 10:22:46 | 显示全部楼层
楼主好问题啊,我新手现身说法一下,也请有经验的大神帮我看看哪里写错了:)
module fixmultiply(product,a,b,clk);
  output [32:1] product;
  input [32:1] a,b;
  input clk;
  wire clk;
  reg [32:1] product;
  reg [32:1] aa,bb;
  reg sign;
  reg [62:1] cc;
  reg [64:1] ccc,y_out;
  
  always @(posedge clk)
    begin
     aa<=(a[32]==0)?a:{a[32],~a[31:1]+1'b1}; //??
     bb<=(b[32]==0)?b:{b[32],~b[31:1]+1'b1}; //??
     sign  <= aa[32] ^ bb[32];    //64 bit
     cc    <= aa[31:1]*bb[31:1];   //62 bit positive data;
     ccc    <= {sign,1'b1,cc};
     y_out <= (ccc[64]==0)?ccc:{ccc[64],~ccc[63:1]+1'b1};     
     product<=y_out[48:17];
    end
endmodule

以上就是我的verilog代码,就是一个流水线的某类乘法器。
以下是得到的sdc文件
###################################################################

# Created by write_sdc on Tue Mar 19 18:45:49 2013

###################################################################
set sdc_version 1.8

set_units -time ns -resistance kOhm -capacitance pF -voltage V -current mA
set_max_dynamic_power 0
set_max_leakage_power 0
set_max_area 0
create_clock [get_ports clk]  -period 5  -waveform {0 2.5}
set_clock_transition -rise 0 [get_clocks clk]
set_clock_transition -fall 0 [get_clocks clk]
set_clock_uncertainty -from clk -to clk 0

以下是DC得到的report timing的文件,显示clk为5ns时,slack>0 满足要求。
Information: Updating graph... (UID-83)
Information: Updating design information... (UID-85)

****************************************
Report : timing
        -path full
        -delay max
        -max_paths 1
Design : fixmultiply
Version: D-2010.03-SP2
Date   : Tue Mar 19 18:45:52 2013
****************************************

Operating Conditions: tt_1p2v_25c   Library: scx3_cmos9sf_rvt_tt_1p2v_25c
Wire Load Model Mode: top

  Startpoint: aa_reg[3] (rising edge-triggered flip-flop clocked by clk)
  Endpoint: cc_reg[48] (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 (ideal)                             0.00       0.00
  aa_reg[3]/CK (DFFQX2VH)                                 0.00       0.00 r
  aa_reg[3]/Q (DFFQX2VH)                                  0.14       0.14 f
  mult_17/a[2] (fixmultiply_DW_mult_uns_1)                0.00       0.14 f
  mult_17/U3496/Y (CLKINVX2VH)                            0.04       0.18 r
  mult_17/U2162/Y (CLKINVX2VH)                            0.17       0.35 f
  mult_17/U3482/Y (XNOR2X2VH)                             0.11       0.46 f
  mult_17/U2605/Y (NAND2BX1VH)                            0.32       0.78 f
  mult_17/U2615/Y (OAI21X1VH)                             0.11       0.89 r
  mult_17/U2060/Y (XNOR2X2VH)                             0.06       0.95 r
  mult_17/U2614/CO (ADDHXLVH)                             0.06       1.01 r
  mult_17/U2387/CO (ADDHXLVH)                             0.05       1.06 r
  mult_17/U2575/CO (ADDHXLVH)                             0.05       1.11 r
  mult_17/U2167/S (ADDFX2VH)                              0.11       1.22 f
  mult_17/U2398/Y (OR2X2VH)                               0.07       1.29 f
  mult_17/U2074/Y (AOI22XLVH)                             0.08       1.37 r
  mult_17/U2148/Y (OAI21X1VH)                             0.06       1.43 f
  mult_17/U2067/Y (AOI22XLVH)                             0.08       1.51 r
  mult_17/U2145/Y (OAI21X1VH)                             0.05       1.56 f
  mult_17/U2188/Y (AOI21XLVH)                             0.09       1.65 r
  mult_17/U2140/Y (OAI21X1VH)                             0.05       1.71 f
  mult_17/U2190/Y (AOI21XLVH)                             0.09       1.79 r
  mult_17/U2141/Y (OAI21X1VH)                             0.05       1.85 f
  mult_17/U2192/Y (AOI21XLVH)                             0.09       1.93 r
  mult_17/U2142/Y (OAI21X1VH)                             0.05       1.99 f
  mult_17/U2194/Y (AOI21XLVH)                             0.09       2.08 r
  mult_17/U2149/Y (OAI21X1VH)                             0.05       2.13 f
  mult_17/U2240/Y (AOI21XLVH)                             0.09       2.22 r
  mult_17/U2150/Y (OAI21X1VH)                             0.05       2.27 f
  mult_17/U2196/Y (AOI21XLVH)                             0.09       2.36 r
  mult_17/U2151/Y (OAI21X1VH)                             0.05       2.41 f
  mult_17/U2242/Y (AOI21XLVH)                             0.09       2.50 r
  mult_17/U2143/Y (OAI21X1VH)                             0.05       2.55 f
  mult_17/U2198/Y (AOI21XLVH)                             0.09       2.64 r
  mult_17/U2144/Y (OAI21X1VH)                             0.05       2.69 f
  mult_17/U2200/Y (AOI21XLVH)                             0.11       2.80 r
  mult_17/U2108/Y (OAI21X1VH)                             0.06       2.87 f
  mult_17/U2146/Y (AOI21XLVH)                             0.07       2.93 r
  mult_17/U2204/Y (OAI21X1VH)                             0.05       2.98 f
  mult_17/U2153/Y (OAI2BB1X2VH)                           0.07       3.05 f
  mult_17/U202/CO (ADDFX2VH)                              0.11       3.16 f
  mult_17/U2154/CO (ADDFX2VH)                             0.11       3.27 f
  mult_17/U200/CO (ADDFX2VH)                              0.11       3.38 f
  mult_17/U2155/CO (ADDFX2VH)                             0.11       3.49 f
  mult_17/U198/CO (ADDFX2VH)                              0.11       3.60 f
  mult_17/U2156/CO (ADDFX2VH)                             0.11       3.71 f
  mult_17/U196/CO (ADDFX2VH)                              0.11       3.83 f
  mult_17/U2159/CO (ADDFX2VH)                             0.11       3.94 f
  mult_17/U194/CO (ADDFX2VH)                              0.11       4.05 f
  mult_17/U193/CO (ADDFX2VH)                              0.11       4.16 f
  mult_17/U2157/CO (ADDFX2VH)                             0.11       4.27 f
  mult_17/U191/CO (ADDFX2VH)                              0.11       4.39 f
  mult_17/U2158/CO (ADDFX2VH)                             0.11       4.50 f
  mult_17/U189/CO (ADDFX2VH)                              0.11       4.61 f
  mult_17/U2161/CO (ADDFX2VH)                             0.11       4.72 f
  mult_17/U187/CO (ADDFX2VH)                              0.11       4.83 f
  mult_17/U2180/Y (XNOR2X2VH)                             0.05       4.88 f
  mult_17/product[47] (fixmultiply_DW_mult_uns_1)         0.00       4.88 f
  cc_reg[48]/D (DFFRQX2VH)                                0.00       4.88 f
  data arrival time                                                  4.88

  clock clk (rise edge)                                   5.00       5.00
  clock network delay (ideal)                             0.00       5.00
  cc_reg[48]/CK (DFFRQX2VH)                               0.00       5.00 r
  library setup time                                     -0.07       4.93
  data required time                                                 4.93
  --------------------------------------------------------------------------
  data required time                                                 4.93
  data arrival time                                                 -4.88
  --------------------------------------------------------------------------
  slack (MET)                                                        0.05

以下是我用PT跑出来的时序分析结果,slack<0很多,说明不满足,非常郁闷,不知是谁算错了。。。
****************************************
Report : timing
        -path_type full
        -delay_type max
        -max_paths 3
Design : fixmultiply
Version: D-2009.12
Date   : Thu Mar 21 17:33:07 2013
****************************************

  Startpoint: product_reg[1]
               (rising edge-triggered flip-flop clocked by clk)
  Endpoint: product[1] (output port clocked by clk)
  Path Group: clk
  Path Type: max

  Point                                    Incr       Path
  ---------------------------------------------------------------
  clock clk (rise edge)                    0.00       0.00
  clock network delay (ideal)              0.00       0.00
  product_reg[1]/CK (DFFRQX2VH)            0.00       0.00 r
  product_reg[1]/Q (DFFRQX2VH)             7.90       7.90 r
  product[1] (out)                         0.00       7.90 r
  data arrival time                                   7.90

  clock clk (rise edge)                    5.00       5.00
  clock network delay (ideal)              0.00       5.00
  output external delay                   -1.00       4.00
  data required time                                  4.00
  ---------------------------------------------------------------
  data required time                                  4.00
  data arrival time                                  -7.90
  ---------------------------------------------------------------
  slack (VIOLATED)                                   -3.90


  Startpoint: product_reg[2]
               (rising edge-triggered flip-flop clocked by clk)
  Endpoint: product[2] (output port clocked by clk)
  Path Group: clk
  Path Type: max

  Point                                    Incr       Path
  ---------------------------------------------------------------
  clock clk (rise edge)                    0.00       0.00
  clock network delay (ideal)              0.00       0.00
  product_reg[2]/CK (DFFRQX2VH)            0.00       0.00 r
  product_reg[2]/Q (DFFRQX2VH)             7.90       7.90 r
  product[2] (out)                         0.00       7.90 r
  data arrival time                                   7.90

  clock clk (rise edge)                    5.00       5.00
  clock network delay (ideal)              0.00       5.00
  output external delay                   -1.00       4.00
  data required time                                  4.00
  ---------------------------------------------------------------
  data required time                                  4.00
  data arrival time                                  -7.90
  ---------------------------------------------------------------
  slack (VIOLATED)                                   -3.90


  Startpoint: product_reg[3]
               (rising edge-triggered flip-flop clocked by clk)
  Endpoint: product[3] (output port clocked by clk)
  Path Group: clk
  Path Type: max

  Point                                    Incr       Path
  ---------------------------------------------------------------
  clock clk (rise edge)                    0.00       0.00
  clock network delay (ideal)              0.00       0.00
  product_reg[3]/CK (DFFRQX2VH)            0.00       0.00 r
  product_reg[3]/Q (DFFRQX2VH)             7.90       7.90 r
  product[3] (out)                         0.00       7.90 r
  data arrival time                                   7.90

  clock clk (rise edge)                    5.00       5.00
  clock network delay (ideal)              0.00       5.00
  output external delay                   -1.00       4.00
  data required time                                  4.00
  ---------------------------------------------------------------
  data required time                                  4.00
  data arrival time                                  -7.90
  ---------------------------------------------------------------
  slack (VIOLATED)                                   -3.90


1
发表于 2013-3-22 10:36:02 | 显示全部楼层
做DC综合时, 我用的TCL脚本如下:

set bus_naming_style {%s[%d]}


set hdlin_ff_always_sync_set_reset "true"

set hdlin_latch_always_async_set_reset "true"


set compile_preserve_sync_resets "true"

set change_names_dont_change_bus_members "true"


#read_file -format verilog {./svm/AddrGen.v}
read_file -format verilog {./svm/FixMultiply.v}

#current_design AddressGenerator
current_design fixmultiply

link

list_design

uniquify

check_design -multiple_designs


#set_flatten -design [find design "*"] false
#set_structure -design [find design "*"] false



#/*set_load 5 * (load_of (SClib+ind/inv0d4/i)) all_outputs()*/
#set_max_transition 2 ldocon_iet
#set_max_transition 2 [all_outputs]
#set_max_fanout 1 [all_inputs]
#set_max_fanout 1 ldocon_iet

set_max_area 0
set_max_leakage_power 0

set_max_dynamic_power 0

#set_dont_touch_network [find port "rst_n"]


#create_clock [get_ports clk] -period 5 -waveform {0.5 1}
create_clock -name clk -period 5 [get_port clk]
set_dont_touch_network [find  port  "clk"]

set_clock_transition 0 [find clock "clk"]

set_clock_uncertainty 0 -from "clk" -to "clk"

#create_clock [get_ports CLKGVCO] -period 25 -waveform {0.5 1}
#set_dont_touch_network [find  port  "CLKGVCO"]


#set_false_path        -from [get_clocks "CLKGVCO"] -to [get_clocks "CLKREF"]
#set_false_path        -from [get_clocks "CLKREF"] -to [get_clocks "CLKGVCO"]

set_fix_multiple_port_nets -all -buffer_constants

set_structure true -boolean true -timing false -boolean_effort high -design [find design *]


compile -map_effort high


write -f ddc -hier -out ./gate/FixMul.ddc
write_sdc ./gate/FixMul.sdc
write_sdf ./gate/FixMul.sdf

write_parasitics -output ./gate/FixMul.spf

write -f verilog -hier -out ./gate/FixMul.gate.v


#ungroup -flatten -all


report_timing > ./result/FixMul.timing

report_power > ./result/FixMul.power

report_area > ./result/FixMul.area

report -reference -area > ./result/FixMul.ref


#quit

做PT静态时序分析时,我用的TCL如下,应高手们看看我哪里设置错了。

set search_path  ". ~/ASIC/aci/sc-x/synopsys"
set link_library  "* scx3_cmos9sf_rvt_tt_1p2v_25c.db"
set target_library  "scx3_cmos9sf_rvt_tt_1p2v_25c.db"
read_verilog ./gate/FixMul.gate.v
current_design fixmultiply
link_design fixmultiply
set_load 3 [all_output]
set_drive 0.0335 [all_inputs]
create_clock -period 5 -waveform {0.00000 2.5000000} {clk}
#create_clock -name clk -period 5 [get_port clk]

check_timing

set_input_delay -clock clk -max 0.5 [get_ports {a[32] a[31] a[30] a[29] a[28] a[27] a[26] a[25] a[24] a[23] a[22] a[21] a[20] a[19] a[18] a[17] a[16] a[15] a[14] a[13] a[12] a[11] a[10] a[9] a[8] a[7] a[6] a[5] a[4] a[3] a[2] a[1] b[32] b[31] b[30] b[29] b[28] b[27] b[26] b[25] b[24] b[23] b[22] b[21] b[20] b[19] b[18] b[17] b[16] b[15] b[14] b[13] b[12] b[11] b[10] b[9] b[8] b[7] b[6] b[5] b[4] b[3] b[2] b[1]}]
set_input_delay -clock clk -min 0 [get_ports {a[32] a[31] a[30] a[29] a[28] a[27] a[26] a[25] a[24] a[23] a[22] a[21] a[20] a[19] a[18] a[17] a[16] a[15] a[14] a[13] a[12] a[11] a[10] a[9] a[8] a[7] a[6] a[5] a[4] a[3] a[2] a[1] b[32] b[31] b[30] b[29] b[28] b[27] b[26] b[25] b[24] b[23] b[22] b[21] b[20] b[19] b[18] b[17] b[16] b[15] b[14] b[13] b[12] b[11] b[10] b[9] b[8] b[7] b[6] b[5] b[4] b[3] b[2] b[1]}]
set_output_delay -clock clk -rise 1.0 [all_outputs]
report_constraint -all_violators -verbose -max_delay > ./PTResults/constraint
report_constraint -all_violators -verbose -min_delay
report_timing -max_paths 3 > ./PTResults/max_paths.txt
report_timing -max_paths 3 -delay min > ./PTResults/min_paths.txt
 楼主| 发表于 2013-3-22 15:27:34 | 显示全部楼层
回复 15# ttxs2009


    有可能是你在dc里面没有设置load,在pt里面设置了。
由于你的load值太大了导致输出时间过慢。
发表于 2013-3-23 00:18:20 | 显示全部楼层
回复 16# chenyueboy


    多谢大侠指点迷津:)
    其实我的tcl文件都是照着网上能找得到的例子或者大学实验手册拼凑起来的,我自己对DC和PT的理解很弱。
    请问一般set_driving_cell 和 set_load (我还见过一种set_capacitance 0.5 [all_outputs])一般该如何设置?
    您说我的DC里没有设置load,请问这样的DC分析出来的是不是错误不合理的估计呢?
 楼主| 发表于 2013-3-23 18:18:46 | 显示全部楼层
回复 17# ttxs2009


    如果是非常高速的设计我就说不好了。
    大概参照你模块所处的环境,例如你上一级
驱动的cell,线上的负载,你输出的负载。具体数值
还需要参照代工厂给的文件。
    这些值差不多就行了,我喜欢把输出负载设的比
较大。
发表于 2013-4-19 16:33:05 | 显示全部楼层
回复 17# ttxs2009


    您好!不知道您的问题后来解决了没有。我也遇到了同样的问题,DC和PT的时序约束是一样的,用的工艺库文件也是一样的,但是PT分析出来的时序报告文件显示的setup违背特别大。望能够分享经验。
发表于 2015-7-31 11:41:36 | 显示全部楼层
signoff
发表于 2015-10-16 15:52:51 | 显示全部楼层
顶一顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-7-1 02:48 , Processed in 0.021765 second(s), 6 queries , Gzip On, MemCached On.

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