越先进的工艺,其制造生产是偏差也越大。所以导致了了很多corner的产生。如RC corner有最基础的rcworst、cworst、rcbes和cbest情况。有的foundry还会对rc的取值范围进行了约束,如cworst_T,采用的是1.5 sigma的取值范围。
此外,工艺越先进,mos管的工作电压也会随之降低。这也发生了有趣的现象,MOS管的器件延迟随着温度的升高而降低即温度反转效应。因此,在温度反转效应下,ff125的delay反而要比ffm40更小。
因此,先进工艺下,RC corner变得更多,同时加上温度反转效应,这就导致了signoff corner要比老工艺多很多。同时,我们也会发现hold signoff corner要比setup多很多。这又是为什么呢?
答案是setup如果不满足的情况下,可能通过降频使得芯片正常工作。而且,我们在设计的时候,一般clock频率都会过约,所以是有较大的margin的。而hold如果出现了violation就没有很好的手段去修复了。因此,我们需要在尽可能多的corner下去check hold。
那么基于上面的陈述,我们可以探讨一下一个问题,就是如果ffcbest的hold check满足的情况下,还有必要去check ffcworst吗?
搞清楚上面的问题,可以从hold check公式入手:hold_slack = ( launch_clock_delay + data_path_delay ) – capture_clock_delay – hold_check
举个极端的例子方便大家理解,假设launch clock path delay为0,launch clock data path delay 也为0,而capture clock path delay较大。
那么hold slack = launch clock path delay + data path delay - capture_clock_path_delay = -capture_clock_path_delay,也就是说,capture clock path delay越大,hold越难满足。很明显,ffcworst下的delay是更大的。所以,在这条特殊case下,ffcbest hold是cover不掉ffcworst的情况的。
当然上面的例子过于极端,我们再看一个例子。假设launch clock path 和data path上的delay主要是集中在cell delay上,capture clock path delay主要集中在net delay上。那么,这种情况下,ffcworst的capture clock path delay就要大于ffcbest了。导致ff cworst下,hold更难满足。
芯片的生产制造和使用环境是特别复杂的。为了能够满足不同体质的芯片在不同的使用场景下面都能够正常的工作。我们需要在尽可能多的corner下都能够满足timing要求,从而增加芯片稳定运行的鲁棒性。
#小编是一个入行多年的数字后端工程师,本身对编程方面比较感兴趣,在数字后端的脚本、flow上比较擅长,可以为大家提供答疑咨询服务。如有需求,可打开星球芯冰乐,获取更多知识干货分享与答疑服务。