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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8569|回复: 12

[求助] DC综合时序报告中的library setup time问题

[复制链接]
发表于 2018-12-24 17:10:23 | 显示全部楼层 |阅读模式

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

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

x
捕获.JPG
请教一下各位前辈,之前都是做设计和验证的,现在开始做综合,没有经验
有个问题,如图所示,setup slack有违例,data required time中library setup time太大,
请问各位,如何减小?
听一些朋友说是fanout的问题
一筹莫展,请大家指点迷津,谢谢大家
发表于 2018-12-25 08:52:43 | 显示全部楼层
path就有问题
发表于 2018-12-25 09:14:11 | 显示全部楼层
修路径
发表于 2018-12-25 09:32:35 | 显示全部楼层
综合阶段, 是不是时钟没有设ideal
发表于 2018-12-25 10:59:01 | 显示全部楼层
把报告全贴出来看看
 楼主| 发表于 2022-3-25 10:48:58 | 显示全部楼层
本帖最后由 IC菜鸟无敌 于 2022-3-25 12:21 编辑

无意间看到四年前我的提问,那现在我自己就来回答一下吧。这是当年一个项目的时序路径检查。采用的是hier的综合策略。项目是数模混合的芯片,这是一个数字包模拟的项目。模拟这边提供相关模块的lib、db给数字部分,由数字部分进行综合、DFT等操作。
library setup time分为两类,第一类就是cell的setup time。准确的说就是寄存器的setup time。因为时序分析的路径,主要包括四大类,reg-to-reg、input-to-output、reg-to-output、input-to-reg。所以cell的setup time就是寄存器的setup time,这个setup time由foundry的lib库提供,具体由lib里查找表获取。第二类就是IP里数据路径的时间。这里的IP可以是购买厂商的IP,也可以是hier综合策略下的子模块。
比如一楼图片里的library setup time就是模拟lib里的时序信息。因为采用的是hier的综合策略,那么上层和下层模块是分开进行综合的。
假设项目里有A、B两大模块,B模块是A模块的子模块,A模块是顶层模块,B模块在A中例化。进行综合时,首先对B单独综合。综合完成以后,产生B模块的lib和db文件,然后再对A模块进行综合时,对A模块进行综合时加入B模块的db文件。
假设设计里面存在一条路径,这条路径的起始点在A模块的C寄存器,路径中间会经过B模块的端口D,路径的终止点在B模块的E寄存器,这条路径的寄存器受时钟CLK驱动。对于这条路径的时序分析,由于A、B两模块是单独综合的,所以时序分析也是分开的。
(1)对B模块单独综合
在对B模块进行综合时,我们会使用set_input_delay命令对端口D进行设置。

set_input_delay -clock CLK -max S [get_ports D]
对B模块单独进行综合,时序分析的起始点就是D端口,终止点就是E寄存器。
进行时序分析后,假设端口D到E寄存器的数据路径延时为M,寄存器本身的library_setup_time为N,时钟的latch time为W,端口D的max external delay为S。
所以slack = WN(M+S)。

(2)对A模块单独进行综合
然后再对A模块进行综合,时序分析会报出C寄存器到B模块D端口的路径分析,时序分析的起始点是C寄存器,终止点就是B模块D端口。
假设C寄存器到B模块D端口的数据路径延时为X(其实这里的X就是B模块单独综合时的S值),时钟的latch time为W(CTS之前假设时钟都是理想时钟,没有skew、latency的影响)。报告中的library_setup_time又是什么呢。这里的library_setup_time的值就是B模块单独综合,进行时序分析的M+N。为什么library_setup_time的值等于M+N。我们可以这样来想。对于C寄存器到E寄存器这条完整的路径,如果不是因为采用hier分模块综合的话,这条完整的路径分析中,数据路径的延时应该等于X+M,latch time等于W。那么slack=W—N(X+M)。如果单独对A模块进行综合,进行时序分析时,如果不考虑B模块db里的时序信息,那么C寄存器到B模块D端口的slack=W—X,这样的情况下,时序分析的结果是错误的。

回到一楼图片的library_setup_time就是子模块里数据路径延时。但由于当时的项目是数字包模拟,模拟的同事暂时没有提供精确的lib,所以手动搞了一个假lib,里面的时序信息都是不准确的,所以一楼里的那个library_setup_time很夸张。
说得有点乱,不知道大家看懂没有
发表于 2023-1-19 15:18:27 | 显示全部楼层


IC菜鸟无敌 发表于 2022-3-25 10:48
无意间看到四年前我的提问,那现在我自己就来回答一下吧。这是当年一个项目的时序路径检查。采用的是hier的 ...


听懂了,谢谢楼主;
    我现在有个mem,library setup time也是比较大,路径是从一个寄存器到mem的端口,这种路径按照经验是需要设定false path吗;
发表于 2023-1-31 13:59:07 | 显示全部楼层


IC菜鸟无敌 发表于 2022-3-25 10:48
无意间看到四年前我的提问,那现在我自己就来回答一下吧。这是当年一个项目的时序路径检查。采用的是hier的 ...


感谢,学习了
发表于 2023-6-29 14:38:39 | 显示全部楼层


IC菜鸟无敌 发表于 2022-3-25 10:48
无意间看到四年前我的提问,那现在我自己就来回答一下吧。这是当年一个项目的时序路径检查。采用的是hier的 ...


您好,向您请教。
我现在有一个情况,TOP包含多个模块,假设为A,B,C;
B模块单独进行综合的时候,没有constraint violation;
将整个TOP(包含A,B(此时为RTL,非综合后的netlist),C,)进行综合,就会报出B模块内部有大量violation;
观察report,可以看出,在TOP综合的结果中,该violation路径中相对于B单独综合的路径,增加了很多(INV,BUF)等;
这样的情况,有没有方法消除这些violation?

 楼主| 发表于 2023-7-3 17:13:16 | 显示全部楼层


ljacki 发表于 2023-6-29 14:38
您好,向您请教。
我现在有一个情况,TOP包含多个模块,假设为A,B,C;
B模块单独进行综合的时候,没有c ...


只有在综合过程中compile选项选择时序优化优先,不要选择面积优化优先,violation不要太夸张就行,其他让后端去修
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-6-20 08:16 , Processed in 0.023734 second(s), 9 queries , Gzip On, MemCached On.

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