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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 14021|回复: 36

[求助] PT约束问题,求解

[复制链接]
发表于 2017-3-22 15:02:27 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 1027199631 于 2017-3-22 15:11 编辑

本人使用的是CSMC 0.35um的工艺,DC综合阶段与STA约束如下:各位大神帮忙看看设置是否合理



DC综合时的约束:(自顶向下)

reset_design

#clock constraint

create_clock -period 100 -waveform {0 50} [get_ports clk_in]

create_generated_clock -divide_by 64 -source clk_in [get_pins uut_filter/M2/clk_64]

// uut_filter/M2/clk_64clk_in进行分频所得到的时钟

set_case_analysis 1 [get_pins uut_clk_pol/POL]

//默认情况下,POL1

set_clock_transition 1 [get_ports clk_in]

set_clock_uncertainty -hold 1 clk_in

set_clock_latency -max 1 [get_clocks clk_in]

set_dont_touch_network [get_clocks *]

set_ideal_network rst

#I/O delay constraint

set_input_delay -max 20 -clock clk_in [remove_from_collection [all_inputs] [get_ports clk_in]]

set_input_delay -min 1 -clock clk_in [remove_from_collection [all_inputs] [get_ports clk_in]]

set_output_delay -max 20 -clock clk_in [all_outputs]

set_output_delay -min 1 -clock clk_in [all_outputs]

//这些值我是根据前级芯片的输出延时来加的

#environmental attributes

set_driving_cell -lib_cell buffd1 -pin Z -library IC035os142_max [remove_from_collection [all_inputs] [get_ports clk_in]]

set_load 1 [all_outputs]

//输出直接手动接数字PAD,其电容很小

set_operating_conditions -min BEST_-40 -max WORST

set_wire_load_mode enclosed

set auto_wire_load_selection true

#Timing_design rule

set_input_transition -max 3 [all_inputs]

set_max_capacitance 10 [all_outputs]

set_max_fanout 15 [current_design]

#Area constraint

set_max_area 0

STA脚本:

set_operating_conditions -analysis_type on_chip_variation -max_library IC035os142_max -max WORST -min_library IC035os142_min_-40 -min BEST_-40

read_parasitics
NO_PAD/128chip.spef.max

PR之后做STA约束:

create_clock -period 100 -waveform {0 50} [get_ports clk_in]

create_generated_clock -divide_by 64 -source clk_in [get_pins uut_filter/M2/clk_64]

set_case_analysis 1 [get_pins uut_clk_pol/POL]

set_propagated_clock [all_clocks]

//陈春章老师那本书上说,PR之后由这句话代替了transitionuncertaintylatency,所以在PT时没有设相关约束。后面发现还需要考虑jitter+margin,可是这个值如何确定?

set_input_delay -max 20 -clock clk_in [remove_from_collection [all_inputs] [get_ports clk_in]]

set_input_delay -min 1 -clock clk_in [remove_from_collection [all_inputs] [get_ports clk_in]]

set_output_delay -max 20 -clock clk_in [all_outputs]

set_output_delay -min 1 -clock clk_in [all_outputs]

set_driving_cell -lib_cell buffd1 -pin Z -library IC035os142_max [remove_from_collection [all_inputs] [get_ports clk_in]]

set_load 1 [all_outputs]

目前芯片测试出现问题:正常情况下,芯片通讯时序不稳定,采值错误;把电压升高10%,依旧不行;只有降频时序正确,且采值稳定。有大神说是setup的问题,可是做STA时,setup至少有65ns的余量;在后仿时将频率提高1倍,时序依旧正确,为何流片结果出现这类问题。是否有大神遇见过此类问题,求解疑

 楼主| 发表于 2017-3-22 15:08:41 | 显示全部楼层
[b]提取寄生参数所用命令文件如下:不知是否设置有问题
* TechReport
BLOCK: chip
MILKYWAY_DATABASE: mw_lib/0618ADC
HIERARCHICAL_SEPARATOR: /
BUS_BIT: []
TCAD_GRD_FILE: TLU/CSMC6S035DPTM_M3524_tran_min.nxtgrd
MAPPING_FILE: StarRCXT/parasitics/ADC.mapping
EXTRACTION: RC
TARGET_ANALYSIS: NONE
COUPLE_TO_GROUND: NO
COUPLING_MULTIPLIER: 1
NETLIST_FILE: StarRCXT/parasitics/0718ADC/chip.spef.min
NETLIST_FORMAT: SPEF
COUPLING_ABS_THRESHOLD: 3e-15
COUPLING_REL_THRESHOLD: 0.03
COUPLING_THRESHOLD_OPERATION: AND
COUPLING_REPORT_NUMBER: 1000
发表于 2017-3-22 15:43:07 | 显示全部楼层
uncertainty 没设肯定不行的
 楼主| 发表于 2017-3-22 16:10:47 | 显示全部楼层
回复 3# 大龄文艺男青年

这个有考虑,但是具体设多少怎么确定?如果这个有问题,降频有用吗?
发表于 2017-3-22 18:06:11 | 显示全部楼层
post STA的set_propagated_clock [all_clocks]只是替代了transition、latency,但是uncertainty还是要留的,这是给设计留裕量的,跟DC里的设置一致就好了。另外,你的uncertainty只设了hold,没有setup。
STA如果用OCV的话,还建议约束加上set_timing_derate,这两者组合起来时序就比较严格了。

上面是较为安全做法,你现在没这样约束并不意味着一定会错,因为只要最后做出来的时序安全并满足要求就行。你可以重新设约束再跑STA,看看PR后的实际时序在setup/hold上有多大裕量,就知道是否有风险了。

后仿频率提高一倍依然正确?你得确认SDF是否反标成功了,要不然这仿真结果就是假象。

芯片降频可以正常工作,从这现象看的确像setup问题,但是提高电压错误依旧又有点矛盾了,因为升压也是能弥补setup的。顺便说一句,试一试降低电压,看看是否是hold问题。
 楼主| 发表于 2017-3-22 20:17:14 | 显示全部楼层
回复 5# 杰克淡定


   正常工作电压3.3V,现在提高至3.6V,时序依旧不稳定;将频率升高1倍,后仿结果是正确的,sdf文件反标成功,因为和前仿做了对比,确实有一定的延时;setup余量最低65ns,hold余量为0,你说的那个减免系数的值是如何确定的?
发表于 2017-3-23 09:24:06 | 显示全部楼层
回复 6# 1027199631


   你是0.35工艺,时钟也只有10M,derate设置0.95/1.05就够用了,还有setup/hold的uncertainty都是要设置的,你说现在hold裕量为0其实很有隐患的,hold有问题降频都是解决不了的,你现在的错误表现我觉得不能排除hold嫌疑,所以建议你降低电压试一下
 楼主| 发表于 2017-3-23 09:39:33 | 显示全部楼层
本帖最后由 1027199631 于 2017-3-23 10:16 编辑

回复 7# 杰克淡定


   减少/增加5%够不够啊?你这个值是怎么得到的?setup/hold的uncertainty设置的值多少合适?降低电压可以确定hold问题是不是因为降低电压使管子工作在ss状态,使data_path上的延时增加,从而减小hold violations ?
发表于 2017-3-23 10:31:19 | 显示全部楼层
回复 8# 1027199631

按你的工艺和频率,想要保守一点的话uncertanity各1ns应该足够,但是过于保守就是过约束,缺点是增大了面积,所以说这个需要自己的多次项目经验值的。

按照你目前的STA报告,是说关键路劲的setup都还有65ns裕量吗?setup裕量是很大的,如果这个值确定,那么稍微降压并不会导致setup问题;如果降压能正常工作,基本可以确定是hold问题了。


还有你下面这个设置:

set_operating_conditions -analysis_type on_chip_variation -max_library IC035os142_max -max WORST -min_library IC035os142_min_-40 -min BEST_-40

read_parasitics
NO_PAD/128chip.spef.max


PR完成后的PT分析,至少也需要分析两个case吧,使用OCV,跑两次PT,分别读入max db和min db,以及对应的max/min spef,得到slow和fast下的timing报告。你这里只分析了slow,没有fast,越发加大了hold问题嫌疑。

 楼主| 发表于 2017-3-23 10:45:23 | 显示全部楼层
本帖最后由 1027199631 于 2017-3-23 10:46 编辑

回复 9# 杰克淡定


  我是跑了两次PT的,读入min.spef也跑通了,这里没有写出来。还有一个问题,在PT中报告analysis_coverage,结果如图:
截图04.bmp
这个分析覆盖率好低啊,怎么解决这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-5 02:46 , Processed in 0.026014 second(s), 7 queries , Gzip On, Redis On.

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