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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12470|回复: 22

[求助] 静态时序分析没问题,后仿setuphold违例,求助...急...

[复制链接]
发表于 2019-5-24 10:11:11 | 显示全部楼层 |阅读模式

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

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

x
各位前辈,情况是这样的,由于快要流片了,但是我用VCS做后仿真总是要降一点频率才能通过(比如说我约束用的是18ns,但我仿真必须用21ns才能通过,否则个别的寄存器提示有setuphold违例),按理说降频的话,应该是setup违例,但我现在也摸不清楚,我用fast的sdf文件和用slow的文件后仿显示是一样的。(静态时序分析里且并非是falth path)

现在我把,违例的部分贴上来,求前辈们帮帮忙:
"smic18_neg.v", 8551: Timing violation in test_mode.inst_picc.inst_baseband.inst_test_if.op_flag_reg_2_
    $setuphold( posedge CK &&& (flag == 1'b1):1867.0ns, posedge D:1867.0ns, limits: (1.0ns,0.5ns) );

这是sdf文件中对应的寄存器描述,以及smic18neg.v里的描述:


我的vcs指令为:
vcs test_mode.v -y ./netlist +libext+.v -v smic18_neg.v -debug_all -R -gui +neg_tchk +optconfigfile+async.list

非常感谢!!!


图片2.PNG
图片1.png
 楼主| 发表于 2019-5-24 10:59:51 | 显示全部楼层
另外,setup或hold是否违例的计算方法是什么...,我听说.v库里面有一个计算公式,sdf也有一个计算公式,反标后会将.v的覆盖掉,不知道该怎么看
 楼主| 发表于 2019-5-24 11:26:15 | 显示全部楼层
还有一个问题,我刚刚在编译选项上加上了+mindelay选项,再仿真,就没违例了?难道是我的仿真方式错了吗?
我用的sdf文件是pt在fast库,cmax的工作条件下反标并输出的sdf文件,
反标语句是:  $sdf_annotate("baseband_fast_cmax.sdf",inst_picc.inst_baseband);

仿真编译语句是:vcs test_mode.v -y ./netlist +libext+.v -v smic18_neg.v -debug_all -R -gui +neg_tchk +optconfigfile+async.list +mindelays

请问我的方法有误吗?
 楼主| 发表于 2019-5-24 11:29:28 | 显示全部楼层
加上max_delays仿真也没问题,不加就有违例,难道我的编译方法错了吗?
发表于 2019-5-24 13:54:41 | 显示全部楼层
thanks for sharing
发表于 2019-5-24 13:57:18 | 显示全部楼层
应该是加 +maxdelay, 你看看你出错的波形对不对了,怀疑是反标不对
 楼主| 发表于 2019-5-24 14:30:42 | 显示全部楼层


mandrake 发表于 2019-5-24 13:57
应该是加 +maxdelay, 你看看你出错的波形对不对了,怀疑是反标不对


您好,加上+maxdelay仿真后,就没有违例了,如果是用默认的+typedelay,就会有违例,您觉得之前是哪里出问题了呢?反标的问题,还是编译的问题呢?我反标和编译的方法都附在楼上,谢谢!
发表于 2019-5-24 15:48:33 | 显示全部楼层
你的sdf中typical 没有数值,你down个波形看看就清楚了
 楼主| 发表于 2019-5-24 16:25:29 | 显示全部楼层


mandrake 发表于 2019-5-24 15:48
你的sdf中typical 没有数值,你down个波形看看就清楚了


嗯嗯好的,我理解了,非常感谢!
我说一下我的理解,您看一下对不对:

1、如果没指定的话,VCS系统默认会选择TYPICAL value进行反标,但是由于我的sdf文件中反标的数值为:(maximun::minimum),没有type的数值,所以是不是没有反标上去?所以vcs自动使用库中的公式进行计算,所以可能会出现违例。

2、我在反标函数中指定:  $sdf_annotate("baseband_slow_cmax.sdf",inst_picc.inst_baseband,,,"MAXIMUM","1:1:1");这样做的话,就把max的值反标上去了,然后也仿真成功了(问题:是不是在$sdf_annotate加上"MAXIMUM"和在vcs编译选项下加上+maxdelays作用是一样的?)


3、不知道为什么pt没有输出typical的值...?那我是不是对同一个sdf文件对MAXIMUN、MINIMUM的条件分别反标一次然后仿真通过即可?


4、.v库中有一个setuphold的计算公式,是不是反标sdf文件后,就会把库中的计算公式覆盖掉,使用sdf文件反标的值计算setup、hold?




非常感谢呢!这个问题困扰了我好几个星期,希望您能回答!
 楼主| 发表于 2019-5-24 17:08:11 | 显示全部楼层


mandrake 发表于 2019-5-24 15:48
你的sdf中typical 没有数值,你down个波形看看就清楚了


刚刚查看了两个信号的波形,发现使用默认的typ反标后的波形延时,和没反标的一样,好像是没反标上去
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 04:33 , Processed in 0.021751 second(s), 7 queries , Gzip On, Redis On.

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