4、低功耗工艺库:MTCMOS、电源门控(Power Gating)、背偏置(Body Bias)技术在SMIC的实现
低功耗设计,说白了就是跟漏电流和动态功耗较劲。我在SMIC 28nm项目上吃过不少亏,今天把MTCMOS、电源门控和背偏置这三板斧的实战经验掰开揉碎讲给你听。
4.1 MTCMOS:多阈值电压库的选型策略
MTCMOS不是一种技术,而是一整套库的搭配思路。SMIC通常会提供三种阈值电压的单元:
| 阈值类型 | 漏电流 | 速度 | 典型应用场景 |
|---|---|---|---|
| HVT(高阈值) | 低 | 慢 | 非关键路径、保持寄存器 |
| RVT(标准阈值) | 中 | 中 | 大部分逻辑单元 |
| LVT(低阈值) | 高 | 快 | 关键路径、时钟树 |
我个人习惯的做法是:先用RVT跑一遍综合,看时序报告里哪些路径紧张。然后只把那些路径上的单元换成LVT,其他地方尽量用HVT。你想想看,如果全片都用LVT,漏电流能翻好几倍,流片回来芯片烫得拿不住。
避坑指南:我曾经在一个SMIC 40nm项目里,为了省事直接把所有寄存器都设成HVT。结果时钟树上的setup time怎么都修不完。后来发现HVT的CK->Q延迟比LVT大了将近40%。时钟树上的单元,我建议至少用RVT起步。
4.2 电源门控:Power Gating的SMIC实现
电源门控,就是把不用的模块彻底断电。SMIC的库里有专门的电源门控单元,叫Header Cell或Footer Cell。
实现步骤其实不复杂:
- 选择门控类型:Header接VDD,Footer接VSS。SMIC 28nm以下我推荐用Header,因为衬底偏置更容易做。
- 插入隔离单元:断电模块的输出必须加ISO Cell,否则浮空电平会灌进工作模块。
- 加状态保持寄存器:有些寄存器断电后要恢复状态,SMIC有专门的 retention flop。
这里有个关键点——唤醒时间。我记得第一次做电源门控时,没注意唤醒电流峰值,结果一上电就把IR Drop干到了15%。后来学乖了,用链式唤醒(daisy chain),一个周期只开一小部分。
我的经验:SMIC的电源门控库通常会提供两种唤醒速度的单元。Fast wake-up面积大但唤醒快,Slow wake-up面积小但唤醒慢。如果模块唤醒后不需要立刻工作,用Slow的就行,能省不少面积。
4.3 背偏置:Body Bias在SMIC的调校
背偏置技术,说白了就是通过改变衬底电压来调节晶体管的阈值。SMIC在55nm以下工艺里支持得比较好。
两种偏置方式:
- 正向偏置(FBB):降低Vth,提升速度,但漏电流增大。适合低频模式提性能。
- 反向偏置(RBB):提高Vth,降低漏电,但速度变慢。适合待机模式省电。
在SMIC的库中,背偏置通常通过NWELL和PWELL的独立供电来实现。你需要额外生成偏置电压,一般用片内LDO或者Charge Pump。
注意:我曾经在SMIC 28nm HPC工艺上试过RBB,结果发现漏电流确实降了,但时序直接崩了。后来查文档才发现,这个工艺节点的RBB对NMOS和PMOS的影响不对称。所以做背偏置前,一定要先跑PVT corner仿真,别想当然。
4.4 三种技术的协同策略
实际项目中,这三种技术往往是组合使用的。我总结了一套SMIC上的典型搭配:
| 工作模式 | MTCMOS | 电源门控 | 背偏置 |
|---|---|---|---|
| 高性能模式 | LVT为主 | 全部开启 | FBB +0.3V |
| 平衡模式 | RVT为主 | 部分关闭 | 无偏置 |
| 低功耗模式 | HVT为主 | 大部分关闭 | RBB -0.3V |
嗯,这里要注意:切换模式时,一定要先做电源域的顺序控制。我见过有人直接切背偏置电压,结果闩锁效应把芯片烧了。先断电源,再调偏置,最后恢复供电——这个顺序不能乱。
核心总结:SMIC的低功耗库其实很成熟,关键是你得理解每种技术的代价。MTCMOS省电但不省面积,电源门控省电但唤醒有代价,背偏置灵活但需要额外电路。没有银弹,只有权衡。
最后说一句,做低功耗设计时,别光盯着仿真数据。我建议流片前做一次完整的功耗估算,把IR Drop、EM和漏电流都跑一遍。SMIC的foundry会提供功耗分析工具链,用起来其实不复杂,别偷懒跳过这步。