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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13505|回复: 13

[求助] 已解决:后端PR后PT分析难点问题,请高手现身,hold time, sdf,谢谢

[复制链接]
发表于 2012-1-10 16:08:38 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 haier822 于 2012-2-9 15:28 编辑

我在PR后进行了PT分析,其中读入了PR产生的SDF文件,发现了hold有违背,路径是由输入端CMP0到内部一触发器(被时钟CKMEAS触发),感觉PR没有对这条路径进行优化修复,就是没有对输入端进来加一些buffer来增加延迟。看了astro中的timing report并没有报告这条路径有违反,是不是由于这个原因导致astro没有对输入端加buffer呢。该怎么处理呢?
1.bmp

另外,library hold time全部归为零了,实际上lib中是负值。为什么会是这样?
发表于 2012-1-11 10:54:55 | 显示全部楼层
LZ, 你能把Astro的report也帖上来吗?(很难想象input_delay=0, 在propagated clock下, in2reg会没有hold违反!)
 楼主| 发表于 2012-1-11 11:25:47 | 显示全部楼层
回复 3# chris_li

你好,上面的贴图中有report 报告。hold time是违反的。路径是由输入port CMP0都内部一reg, 就是你所说的in2reg,之间没有buffer等器件,所以没有路径延迟。那么我的疑问是:我在DC的脚本中已经加入了set_input_delay -clock CK -min 0 [all_inputs], 期望用来约束hold time。为什么PR中 astro没有对其进行hold修复,就是在reg数据端加些buffer,是不是astro分析不到输入端的时序信息(我试着让astro分析输入端到reg的timing,提示说找不到该路径)? 期待你的帮助,非常感谢!
发表于 2012-1-11 11:33:14 | 显示全部楼层



呵呵, 目的错了吧, input_delay为0, 会让in2reg的setup很好看, hold一般会有问题, 特别是在propagated clock下。

我是很好奇, 你说这条in2reg在Astro下没hold问题?
 楼主| 发表于 2012-1-11 14:04:59 | 显示全部楼层
回复 5# chris_li

上面已经说到了在astro找不到 in2reg 的路径,所以没有报in2reg 的时序。这也是我的疑惑之一。只是在PR后的PT中报出in2reg hold time 违反。能够看到in2reg之间的路径没有任何buffer,而时钟具有propagated属性。
 楼主| 发表于 2012-1-11 14:25:34 | 显示全部楼层
回复 6# haier822


   我没有让input delay为0,我是让 input delay -min 0,  我还设置了 -max的。setup time 分析时还是照着-max的那个最大值来分析。这样分析的setup time才是最悲观的。
发表于 2012-1-12 19:05:13 | 显示全部楼层
1.你在astro中是否有设置set_propagated_clock.
2.你astro中的约束和pt的约束是否一致。比如astro中设置了set_false_path而PT中没有。
3.你的CKMEAS时钟定义是否在input port, 那个1ns的 network_latency是你的clock source latency吧?
你的report_timing加上这个选项我看看:-trans -cap -net -path full_clock_expanded
4.astro的报告也贴上来,否则不好对比。

另外,我没使用过astro,但是一般write_sdf都会有是否包含负延迟的一个选项,你看一下。
 楼主| 发表于 2012-1-12 22:14:57 | 显示全部楼层

astro与pt分析hold time差异,非常之问题,请多多帮忙,谢谢

本帖最后由 haier822 于 2012-1-12 23:23 编辑

回复 10# dianyubaobei

非常感谢。下面有一些问题,请你帮忙分析,多谢。
系统中要插入scan chain。之前做完DFT之后,产生了一个综合后的sdc。之后导入到astro。后来发现,实际上这一过程由于涉及到scan chain。还必须在时钟树综合之后load 进 关于scan chain的 sdc(要手动写),之前缺少这个sdc。另一方面,原来在astro gui中Timing setup将disable 了ignore propagated clock选项,但是astro跑出来的时序分析中时钟始终没有propagated属性。后来加入了sdc "set_propagated_clock *" 的命令,astro报出的时序中时钟才有了propagated属性(这其中的原因是什么呢),见图一:
astro.bmp
由于是scan flipflop,库里的hold time设计是负值。如图中红框处。
   
跑完astro,导出sdf文件去做sta, 在PT中报出同一路径,见图二:
pr后pt.bmp
此时,reg library hold time 显示为0,并没有像astro用的负值。为什么呢? 难道PT只会去找三个参数中的最大值吗,在下面的sdf中可以看到,如果PT去找最大值的话,肯定找到的就是0了。在这种情况下用0来分析hold time 要比用负值去分析来的更悲观。
同时arrive time的计算上也存在差别,那么这两种哪个更为精确呢? 或者还是以最终的STAR-RC导出的spef去做sta结果最精确,为最终的参考呢?

此时,我去查了下对应reg在sdf文件的参数,见图三:
pr后sdf.bmp
这里的疑问是,astro导出的sdf,三个参数中,hold time中右边两个参数全为0,这是什么原因导致的?(然而,DC导出的sdf中这三个参数全为负值,感觉DC导出的sdf是正常的)
 楼主| 发表于 2012-1-12 23:48:15 | 显示全部楼层
本帖最后由 haier822 于 2012-1-13 09:46 编辑

回复 8# dianyubaobei

1.你在astro中是否有设置set_propagated_clock.

之前一直用astro timing setup对话框中将ignore propagated clock  取消disable,astro时序报告中时钟始终是理想时钟(沿用DC导出的sdc)。最后在时钟综合完后在命令行加入set "set_propagated_clock *" 指令,astro报出来的时序中时钟具有了propagated属性。

2.你astro中的约束和pt的约束是否一致。比如astro中设置了set_false_path而PT中没有。
可能就是缺少了上面那条指令。

3.你的CKMEAS时钟定义是否在input port, 那个1ns的 network_latency是你的clock source latency吧?
是的,DC中定义的。

这里面最不解的是:
比较astro导出的sdf,和DC导出的sdf,见下:
对于同一个reg port,
DC.SDF: (HOLD (negedge E) (posedge CK) (-0.207:-0.118:-0.118))

astro.SDF: (HOLD (negedge E) (posedge CK) (-0.2395:0.0000:0.0000))
为什么astro导出的SDF右边都是零,和DC不一样,那些零值是怎么在astro中计算出来的呢,哪里的问题啊?

困惑中,急待帮助,谢谢!
发表于 2012-1-13 11:29:19 | 显示全部楼层
回复 9# haier822


   因为sdf的格式为min:typ:max,可能你的sdf只写了min,所以typ和max是为0,你看一下应该有全部写的选项的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-5-25 23:15 , Processed in 0.035443 second(s), 10 queries , Gzip On, MemCached On.

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