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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 22821|回复: 35

[求助] 尚未解决--PT产生的SDF文件中,hold time 没有按照lib中负值计算,不解,寻求帮助

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

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

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

x
本帖最后由 haier822 于 2012-2-9 16:03 编辑

我在pr后进行pt分析,同时在pt中产生sdf文件,比较了pt路径分析中的 library hold time 和 sdf中的hold time check,发现有不一样的情况。
首先说明: 用到库里的reg为scan flip-flop,library hold time是负值,比如:-0.83。但是sdf中全被表为0了。见下图:
path.bmp
我们看到那个library hold time 为-0.88.
sdf hold time sta.bmp

产生sdf命令:write_sdf -version 3.0 ./out/sta.sdf
我们看到在sdf中相同reg hold time 是0. pt产生sdf怎么没有体现负值呢?  如果在这种情况下,用这个sdf去做后仿,岂不是不准确了?

请朋友们指导下,多谢! 顺祝大家新年快乐!
发表于 2012-1-19 18:02:41 | 显示全部楼层
缺省 write_sdf  会写出来吧,

-negative_XXX 会把所有负值变成 0 ,

这个没关系吧, 只要sta过就行了, timingcheck 会体现在 sdf里面么?
发表于 2012-1-20 09:32:22 | 显示全部楼层
后防应该会调用sdf里面的delay信息
发表于 2012-1-20 10:06:58 | 显示全部楼层
本帖最后由 jun_dahai 于 2012-1-20 10:08 编辑

首先,SETUP和HOLD这两个时序描述符不支持负值,如果限制值是负值的话,仿真工具会直接当成0处理

其次,SETUPHOLD这个时序描述符,是SETUP和HOLD两者的联合,并且支持负值,如果限制值是负值的话,当仿真工具使能了负值检查时,会进行负值的时序检查,否则也会当成0处理

然后,我们再讨论这个问题。工具直接把负值当成0处理,是一种更悲观的处理方式,在时序不紧张的情况下,倒是影响不太大。如果时序相对很紧张,就可能出现很多TIMING VIOLATIONS。所以,到底关心不关心这个问题,就要看设计的时序情况了

最后,提出一种使用SETUPHOLD时序描述符,描述SDF文件的方法。
    write_sdf -version 3.0 -include SETUPHOLD -context verilog xx.sdf

Note:vcs工具使能负值时序检查的参数是+neg_tchk
发表于 2012-1-20 10:34:12 | 显示全部楼层
回复 5# jun_dahai


   我用的是version 2.1的分开描述SETUP和HOLD可以写出负值   如果想用SDF反标检查RECOVERY 和 REMOVAL ,在写出write_sdf是不是还需要附加什么选项?
   谢谢指点。
发表于 2012-1-20 12:05:07 | 显示全部楼层
回复 6# iuqq205


    我已经提到了,是可以用SETUP和HOLD写出来负的时序限制值,但是仿真工具会把负值当成0处理,这样达不到原本想要的结果。只有SETUPHOLD和RECREM才支持负的时序限制值

    不需要加额外的选项,但必须是3.0版本的才能全部写出来,2.1版本的好像无法写出来REMOVAL

    如果无法写出来RECOVERY和REMOVAL,再请察看library中是如何定义recovery和removal的时序曲线类型的,关键字:timing_type
发表于 2012-1-20 22:09:52 | 显示全部楼层
回复 7# jun_dahai


    谢谢你。
    之前没理解你说的不支持负值,现在知道了。下次去试试,原来没注意2.1会把负值当0处理。
 楼主| 发表于 2012-2-9 16:01:55 | 显示全部楼层
回复 3# icfbicfb

确实是没有写出来负值,PT分析路径时序的时候都用到了cell的负值的library hold time,怎么导出的SDF却始终产生不出负值,始终为0。(HOLD (posedge DT)(posedge CLK) (0.000::0.000))。什么原因呢?
发表于 2012-2-11 11:00:58 | 显示全部楼层
5F很精采的回答阿!!
 楼主| 发表于 2012-2-13 14:26:13 | 显示全部楼层
回复 10# cmwtony

1. 5#说:首先,SETUP和HOLD这两个时序描述符不支持负值,如果限制值是负值的话,仿真工具会直接当成0处理
疑问:怎么说SETUP和HOLD不支持负值呢?像我之前DC和ASTRO导出的SDF中不都有负值吗,
对于同一个reg port,SDF中的timingcheck:
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))

另外我发现,之前我一直都是在PT中反标了astro导出的astro.SDF,导出的SDF中timingcheck中没有负值。如(HOLD (posedge DT) (posedge CLK)(0.001::0.000))。后来尝试在PT中不反标astro.SDF,那么最后导出的SDF中 timingcheck中是包含负值的。如 (HOLD (posedge DT) (posedge CLK)(-0.933::-0.933)),这是什么原因呢?反标了astro.SDF会影响PT产生的SDF?

2. 5#说:最后,提出一种使用SETUPHOLD时序描述符,描述SDF文件的方法。
    write_sdf -version 3.0 -include SETUPHOLD -context verilog xx.sdf

疑惑:我按照此方法导出的SDF中,如果反标了astro.SDF,PT仍然是导不出带有负值的SDF.

请指导,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-19 03:10 , Processed in 0.031494 second(s), 8 queries , Gzip On, Redis On.

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