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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 3617|回复: 22

[解决] set_clock_uncertainty 挽救不稳定的时钟【已解决】

[复制链接]
发表于 2024-11-29 17:17:32 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Patrick0809 于 2024-12-6 10:10 编辑

记录下面对不稳定时钟时,fix timing violation的方法。(新手小白第一次做数字ic全流程)

项目为一颗数模混合芯片,数字模块的时钟由模拟产生,需求为10M,但是不同conner下的时钟仿真出来的频率很不稳定,大概是8-12M;一套流程跑下来之后,在后仿的时候,改变时钟的频率,网表直接罢工了,全是timing vioation。

这时学pt的室友告诉我一个时钟的约束,set_clock_uncertainty ,可以把他设为0.2来假设时钟的不稳定性。在dc时加入该约束,吐出的网表有很多hold violation。但是dc做不到的,交给icc来做,pr之后icc完美解决所有的hold violation,eco fix DRC之后突出网表和反标sdf拿去后仿,在时钟8M时完美运行,没有任何violation。在时钟约为12M时,vcs会报有几个cell有timing vioaltion,但是看了下输出还没被影响到,也算是有惊无险,后续再去研究有timing violation的cell具体违例的时序。

分享一下fix的过程,也希望大佬可以纠正一下错误。
发表于 2025-7-17 22:03:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-3 15:14:04 | 显示全部楼层

pt eco pr后的netliset,生成change_list_file并读入icc



   
ljianlin 发表于 2024-12-3 14:43
> 1、时钟由12M变为8M,时钟上升沿到来变晚,但是path delay没变,所以setup会更加乐观。


感谢您的答复,我去理解下hold同周期检查。
回复 支持 反对

使用道具 举报

发表于 2024-12-3 14:43:35 | 显示全部楼层


   
Patrick0809 发表于 2024-12-3 14:24
1、时钟由12M变为8M,时钟上升沿到来变晚,但是path delay没变,所以setup会更加乐观。


> 1、时钟由12M变为8M,时钟上升沿到来变晚,但是path delay没变,所以setup会更加乐观。


这个理解没有问题。所以 setup 一般只需要考虑最高频率下(12M)能过,比它低的频率 (10M / 8M 等等) 肯定也能过,STA一般都用最高频率来检查setup 部分。

> 2、时钟变慢,上一级d触发器q端产生的信号高电平时间相应的变长,所以不会影响下一级d触发器的hold。



hold time的定义,是对start point 和 end point 寄存器同一个上升沿来检查的,因此跟频率无关。有些STA的入门资料介绍这个,附带有时序图,
大概看看就比较清楚,或者直接先记住这个结论,有时间再看资料也可以。


回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-3 14:24:12 | 显示全部楼层


   
ljianlin 发表于 2024-12-3 10:54
1. STA 的基本原理,setup 在高时钟频率(12M)能满足, 肯定在比较低的频率(8M)也能满足


1、时钟由12M变为8M,时钟上升沿到来变晚,但是path delay没变,所以setup会更加乐观。


2、时钟变慢,上一级d触发器q端产生的信号高电平时间相应的变长,所以不会影响下一级d触发器的hold。

模拟跑的是-40到125°的仿真,得出的数据;模拟部分是反向来的,原来芯片自带的一个PLL产生的时钟,我也看不懂,只能相信模拟部门给的数据。

面积的话,影响不是很大,原芯片port摆放基本都摆在core top了,我pr时稍稍比综合之后算出来的面积加大了一点,否则core top部分的布线会阻塞。更改dc的clk uncertainty为20%后,我pr的core面积没变,还是摆下了,归功于设计比较小吧,毕竟只有两千个cell。

不知道我上面的理解对不对,谢谢您的指点。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-3 14:17:11 | 显示全部楼层


   
quanqiutong 发表于 2024-12-3 10:45
估计他们的data path比较长,超过20ns,所以hold 影响就很小,所以很容易就解决了。
...


时钟比较慢,report timing的slack都很大,70多ns,可能是因为这个时序比较好修。具体还不是很懂
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-3 14:15:12 | 显示全部楼层


   
曦玄 发表于 2024-12-3 10:05
我也想知道后端咋解决的,估计会更改hold的uncertainty


我是做前端的,项目后端没人做,我硬顶上的,之前没学过。所以我这个“后端”也想不到什么好的解决办法了,只能牺牲点面积和功耗。
回复 支持 反对

使用道具 举报

发表于 2024-12-3 10:54:45 | 显示全部楼层


   
Patrick0809 发表于 2024-12-3 09:03
应该是有时序收敛的问题,12M能满足的建立时间和保持时间,8M下不一定能满足吧
...


1. STA 的基本原理,setup 在高时钟频率(12M)能满足, 肯定在比较低的频率(8M)也能满足


2. hold 不受频率影响,12M的时候 hold有违例,就算降到1M, 那个违例还在,违例的大小基本不变。
    当然,不排除你这个 chip 在工作的时候温度 / 电压的一些变化导致它跑出 PT 的工艺 corner覆盖范围,
   从而导致 hold 违例,但是加 20% clk uncertainty 还是有点多。不过基于你的时钟稳定性不好,也许可以理解加这么多的margin, 只要能过就可以,
   最多是over-constrainted 浪费点面积功耗。

另外比较好奇,用的什么工艺和时钟生成方法。按理说 CMOS PLL 产生 10MHz的时钟是很成熟的设计,如果常规的PLL在不同corner 下也是类似的时钟波动范围,
那其实不用加这么多 uncertainty margin, 可以看看 pt sdc是不是有其它约束没有加全,导致pt 看不到仿真时候的一些 timing path.
回复 支持 反对

使用道具 举报

发表于 2024-12-3 10:45:17 | 显示全部楼层


   
曦玄 发表于 2024-12-3 10:05
我也想知道后端咋解决的,估计会更改hold的uncertainty


估计他们的data path比较长,超过20ns,所以hold 影响就很小,所以很容易就解决了。
回复 支持 反对

使用道具 举报

发表于 2024-12-3 10:05:37 | 显示全部楼层


   
quanqiutong 发表于 2024-12-3 09:46
你们的pll 太不稳定了,uncertainty 都要过20ns,那面积不会爆吗?为了修hold,要加多少buffer? ...


我也想知道后端咋解决的,估计会更改hold的uncertainty
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-9-28 06:01 , Processed in 0.018384 second(s), 5 queries , Gzip On, Redis On.

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