set_clock_latency
我在做DC的时候,对时钟的设定如下:
create_clock [get_ports clk] -period 10 -name clk
set_clock_latency -source 0.0 clk
set_clock_latency -max 1.2 clk
set_clock_transition 0.3 clk
set_clock_uncertainty 0.4 clk
set_ideal_network clk
然后DC的综合结果,关于clock组的Setup时序分析也没有出现violation,但是将综合后的结果拿去icc做布局布线之后,报出同一条路径上时序却出现了违例,我将两个报告对比了一下,发现了一个问题,在DC的时序报告上,设定的networrk latency在AT 和RT时都计算了,所以,时序分析的时候,路径上没有出现违例,但是在icc中,分析的时候只有在AT的路径上加了network latency ,而在RT路径的计算时,这个值并没有计算进去,这样导致了时序出现违例。我不明白icc中路径上的时序分析是怎么计算的,这个问题应该怎么解决?
什么阶段的报告,cts之前还是之后,贴报告看看
恩,是cts之前的,只进行了预布局的,这是预布局之后的报告Startpoint: datapath_ip/pro_top/sdram_write_master_inst_address_master_for_ready_reg_1_
(rising edge-triggered flip-flop clocked by clk)
Endpoint: datapath_ip/wishbone_master_ip1_wraddr_reg_reg_31_
(rising edge-triggered flip-flop clocked by clk)
Scenario: func_worst_corner
Path Group: clk
Path Type: max
PointIncrPathVoltage
------------------------------------------------------------------------------------
clock clk (rise edge)0.000.00
clock network delay (ideal)1.201.20
datapath_ip/pro_top/sdram_write_master_inst_address_master_for_ready_reg_1_/CK (FFSDRHD1X)
0.00 #1.20 r1.62
datapath_ip/pro_top/sdram_write_master_inst_address_master_for_ready_reg_1_/Q (FFSDRHD1X)
0.671.87 f1.62
datapath_ip/pro_top/U1065/Z (NOR2HD1X)0.232.10 r1.62
datapath_ip/pro_top/U500/Z (NOR2B1HD1X)0.312.40 r1.62
datapath_ip/pro_top/U624/Z (NOR2B1HD2X)0.252.65 r1.62
datapath_ip/pro_top/U623/Z (NOR2B1HD2X)0.232.89 r1.62
datapath_ip/pro_top/U808/Z (NOR2B1HD2X)0.233.12 r1.62
datapath_ip/pro_top/U807/Z (NOR2B1HD2X)0.233.35 r1.62
datapath_ip/pro_top/U806/Z (NOR2B1HD2X)0.233.58 r1.62
datapath_ip/pro_top/U805/Z (NOR2B1HD2X)0.233.82 r1.62
datapath_ip/pro_top/U804/Z (NOR2B1HD2X)0.234.05 r1.62
datapath_ip/pro_top/U1064/Z (NOR2B1HD2X)0.334.38 r1.62
datapath_ip/pro_top/U3422/Z (NOR2B1HD1X)0.234.60 r1.62
datapath_ip/pro_top/U1063/Z (NOR2B1HD1X)0.354.95 r1.62
datapath_ip/pro_top/U1062/Z (NOR2B1HD1X)0.485.43 r1.62
datapath_ip/pro_top/U1061/Z (NOR2B1HD1X)0.505.93 r1.62
datapath_ip/pro_top/U1060/Z (NOR2B1HD1X)0.506.43 r1.62
datapath_ip/pro_top/U1059/Z (NOR2B1HD1X)0.506.94 r1.62
datapath_ip/pro_top/U1058/Z (NOR2B1HD1X)0.417.34 r1.62
datapath_ip/pro_top/U1057/Z (NOR2B1HD1X)0.397.73 r1.62
datapath_ip/pro_top/U1056/Z (NOR2B1HD1X)0.328.05 r1.62
datapath_ip/pro_top/U1055/Z (NOR2B1HD1X)0.308.35 r1.62
datapath_ip/pro_top/U1054/Z (NOR2B1HD1X)0.298.64 r1.62
datapath_ip/pro_top/U1053/Z (NOR2B1HD1X)0.308.94 r1.62
datapath_ip/pro_top/U1052/Z (NOR2B1HD1X)0.319.24 r1.62
datapath_ip/pro_top/U1051/Z (NOR2B1HD2X)0.269.50 r1.62
datapath_ip/pro_top/U381/Z (INVHDPX)0.119.61 f1.62
datapath_ip/pro_top/U2304/Z (NOR2HD2X)0.149.75 r1.62
datapath_ip/pro_top/U3441/Z (NAND2B1HD1X)0.169.91 f1.62
datapath_ip/pro_top/U3386/Z (OAI21HD1X)0.1710.08 r1.62
datapath_ip/pro_top/U3385/Z (OAI31HDLX)0.1510.23 f1.62
datapath_ip/pro_top/U3384/Z (AND2HD1X)0.2410.46 f1.62
datapath_ip/pro_top/bus_baseaddr_w[31] (pro_top)0.0010.46 f1.62
datapath_ip/U4025/Z (AOI22HD1X)0.1910.65 r1.62
datapath_ip/wishbone_master_ip1_wraddr_reg_reg_31_/D (FFSDSHD1X)
0.0010.65 r1.62
data arrival time10.65
clock clk (rise edge)8.908.90
clock network delay (ideal)0.008.90
clock uncertainty-0.408.50
datapath_ip/wishbone_master_ip1_wraddr_reg_reg_31_/CK (FFSDSHD1X)
0.008.50 r
library setup time-0.268.24
data required time8.24
------------------------------------------------------------------------------------
data required time8.24
data arrival time-10.65
------------------------------------------------------------------------------------
slack (VIOLATED)-2.41
在计算RT的时候,network latency 为0,并没有计算进去,我就是这不理解。
因为你用 OCV 去检查
其实根本就不需要 set_clock_latency, ideal 就让它为0,不是 ideal 就让 tool 去计算真实的 delay
也就是说在DC的时候,就不去设定这个值,只用指定uncertainty就可以了,在icc中,CTS之后有这个值了,就直接按真实的值去计算?那两个不同时钟域分析的时候,也不需要设定这个值吗?比如,在input组的时候,可能start point的控制时钟是clk ,而endpoint 的控制时钟是clk_image,这两个时钟在定义的时候,由于周期的不同,会设定不同的network latency的值,是不是这种情况也可以统统不设定这个值了,直接按照ideal来做?
在陈大的置顶帖 “数字后端 FAQ” 就有说明了:
Q1.7 什么时候需要设置latency?
latency分为source latency 和 network latency 两种。 source latency是源时钟自带的,network latency就是CTS后的clock tree insertion delay。
在综合时,一般不需要latency,
除非,
已知不同clock带有不同的source latency,并且它们之间有时序要求
预知不同clock会有不同的clock tree insertion delay,不想平衡它们,但是要满足他们之间的时序要求
做完CTS后,要把network latency去掉
学习了
请问做完cts之后,如何去掉network_latency呢? 是需要什么设置吗? 目前我刚做完时钟树。等待跑的时候看到帖子了就想问问哈。
6楼答案很牛逼,
propagated clock 会覆盖掉ideal clock 的 network latency。
可以用 remove_clock_latency
学习了