现代先进工艺下的后端设计都是在 MCMM 情况下设计的,所谓 MCMM 就是 muti-corner muti-mode,用于芯片的不同工作模式和工作条件。
后端设计过程中,需要保证芯片在所有工作模式和工作条件下都能正常工作,工作模式一般只有几种,可以全部验证一遍;而工作条件则有无数种,不可能一一遍历,所以我们一般选取极端工作条件,只要在所有极端条件下可以正常工作,那么其他所有工作条件下都不会有问题。
在ICC 中,MCMM 是用 scenario 来描述的,而scenario 是 mode 和 corner 的随机组合,比如有两个 mode 四个 corner,那么就需要定义 2x4=8 种 scenario。
此外,先进工艺中还会考虑不同的 RC条件,即 CMAX / CMIN ,这样一共就需要定义 2x2x2=8 种 scenario。
常见的 scenario 定义如下图:
那么,在具体定义scenario 时,是如何去描述 mode、corner、rc 呢?
首先,mode 是由 sdc 决定的,一般情况下,designer 会提供至少两份 sdc: func.sdc scan.sdc
corner 是由 operating condition 来描述的,而 opcn 则来源于 db 库中的定义,包括温度和电压
RC 则是由 TLU+ 文件描述的,常见的 max_tlup / min_tlup,由 foundry 提供