资讯动态

16nm FinFET低功耗SRAM编译器:原理、省电设计与SoC集成实践

发布时间:2026/8/28 15:47:50 来源:尧图企业网站定制
SRAM编译器Memory Compiler的新闻在行业里其实不算稀奇几乎每家IP厂商都在更新工艺库但sureCore这次发布的16nm FinFET低功耗版本我还是专门把公开资料从头到尾看了一遍。原因很简单——在低功耗这条赛道上能把Memory Compiler做到“默认低功耗”而不是把压力全部甩给后端的厂商本身就属于少数派。这颗编译器主打的不是“能生成SRAM”这个基本盘而是“在16nm FinFET工艺下生成真正省电的SRAM”面向的是可穿戴、物联网、边缘计算这类对功耗极其敏感的SoC设计。这篇文章我打算从几个层面展开先讲清楚Memory Compiler到底是干什么的为什么它在低功耗SoC里地位这么重再聊聊16nm FinFET这个工艺节点为什么到现在还是香饽饽以及FinFET的三维结构到底长什么样我会用文字把结构示意描述清楚然后拆解低功耗SRAM编译器的省电手段最后从实操角度聊聊选型、集成、功耗评估这些大家真正会踩坑的地方。1. 先搞懂Memory Compiler到底在解决什么问题1.1 一块SRAM在SoC里有多“重”如果你拆过任何一颗现代SoC的die照片会发现芯片面积里最显眼的往往不是CPU核而是密密麻麻的SRAM阵列。以我经手过的几颗物联网芯片来看SRAM面积占比超过50%是常态通信基带芯片里这个比例甚至能到70%以上。面积占比大还不是最头疼的麻烦的是功耗跟着面积走——SRAM阵列里的存储单元每个周期都在充放电位线、字线再加上越来越难压的漏电一块大SRAM经常能吃掉整个芯片动态功耗的三到四成。所以我一直跟团队里的小朋友强调低功耗设计如果只盯着逻辑综合和时钟门控而对SRAM不闻不问那功耗指标基本是没救的。SRAM不是标准单元不能靠综合工具随手铺一片它需要专门的存储单元电路、灵敏放大器、写驱动、译码器、时序控制这些电路对工艺偏差、电压降、温度变化极度敏感。用Full Custom方式手工画一块SRAM性能当然最好但一颗SoC里可能有几十上百块不同容量、不同位宽、不同功耗需求的SRAM全部手工设计既不现实也没必要。这正是Memory Compiler存在的根本理由。1.2 Memory Compiler是怎么“变”出SRAM的Memory Compiler本质上是一个参数化的SRAM生成器。你给它输入一组配置参数——容量多大、位宽多少、要几个Bank、字线怎么分、目标频率多少、工作电压多少、需要哪些低功耗模式——它会在几分钟到几十分钟内吐出一整套物理设计产物GDS版图、LEF抽象、Liberty时序功耗模型、Verilog行为模型、SPICE网表、以及一份完整的datasheet。这个过程靠人肉搭是搭不出来的。因为SRAM设计参数空间非常大同样1MB的SRAM你可以做成1024行×8192列也可以做成8192行×1024列还能加mux列复用改成不同的行列比例。不同配置下单元面积、访问延迟、动态功耗、漏电功耗的差异可以达到两倍甚至更多。编译器干的事就是把这个巨大的设计空间搜索一遍按照你给定的约束选出最优配置然后自动完成从单元阵列布局到外围电路布线的全套流程。1.3 为什么不能指望标准单元库来解决SRAM这里要澄清一个很多人混淆的概念标准单元库和Memory Compiler是两码事。标准单元是反相器、与非门、触发器这类小逻辑的预制版图综合工具把它们像拼积木一样拼出逻辑网表。但SRAM阵列不能用这个思路做——一个6T存储单元如果拿标准单元去搭面积会大得离谱功耗和性能也完全没法看。SRAM必须采用高度定制化的密集单元版图。存储单元本身要尽量小位线和字线要经过特殊的布线规划灵敏放大器要在极小的信号摆幅下快速判断数据。这些都不是通用标准单元能胜任的。而且从设计流程上讲Memory Compiler生成的IP带了完整的时序约束和物理约束SoC集成时直接当作硬核hard macro摆放就行后端工具不用去管内部结构。这一点非常关键——它把“SRAM设计”这件极度专业的事封装成了“填参数”这件普通数字工程师都能做的事。2. 16nm FinFET为什么成了低功耗的主战场2.1 FinFET结构示意把“门”包起来的三维器件最近总有人搜“finfet结构示意图”说明大家对FinFET到底长什么样还是很好奇的。我尽量用文字把这张图画出来传统平面MOSFET里栅极像一块平板压在硅衬底表面导电沟道就在栅极正下方的硅表层栅极只能从上方“俯视”沟道。而FinFET里硅衬底上会刻出一个个垂直凸起的薄片就像海面上露出的一排鱼鳍——这个薄片就叫fin鳍片。栅极材料不再是平板而是像“夹具”一样跨骑在鳍片中间把鳍片的左右两个侧壁和顶部三个面全部包裹起来。这个结构示意里面有几个关键尺寸值得关注鳍片高度fin height、鳍片间距fin pitch、以及栅极包裹的长度。因为栅极从三个方向夹住沟道栅控能力比平面器件强得多哪怕沟道做得很短栅极也能牢牢“按住”沟道的电势抑制漏电。这就是FinFET能往14nm、16nm、甚至更先进节点推进而不被短沟道效应击穿的核心原因。从功耗角度看更强的栅控意味着关断状态下漏电路径更少亚阈值漏电可以压得更低这是SRAM这类存储阵列最关心的指标。2.2 16nm节点为什么到现在还“没退休”你可能会有疑问现在3nm、5nm都量产了怎么还有人盯着16nm做编译器这里面的逻辑其实很实在。先进制程确实性能强、密度高但成本也指数级上升而且并不是所有应用都需要极限性能。对于IoT、可穿戴、车规、部分通信芯片来说16nm FinFET在成本、性能、功耗、成熟度之间刚好踩在一个非常甜的点上。16nm FinFET相对28nm平面工艺是个明显的分水岭。同性能下功耗大概能降一半上下这在电池供电的设备上是质的区别同功耗下性能又能显著提升。而且16nm节点尤其是各类16FFC这样的低功耗优化版本已经量产多年良率、PDK成熟度、IP生态都非常完整设计风险远低于贸然上7nm。很多AIoT芯片和边缘推理芯片到今天仍然选16nm不是保守而是商业上算得过账。2.3 在FinFET上做低功耗SRAM挑战反而更刁钻工艺进步并不等于SRAM设计变简单了。FinFET器件的阈值电压、漏电特性和平面工艺差异很大而且16nm节点引入了大量的工艺波动局部波动、鳍片高度波动等。SRAM单元是最小的电路结构恰恰对波动最敏感。具体来说有三大挑战。第一单元稳定性。FinFET器件的Vth失配仍然存在读写时可能发生读破坏或写失败单元需要精细调整器件尺寸和阈值组合。第二漏电路径变得多样。FinFET的漏电不只有亚阈值漏电还有栅极漏电、结漏电低功耗设计必须全路径控制。第三低电压工作更难。SRAM想在0.6V甚至更低电压下保持数据、完成读写单元外围电路的余量极其有限。这也是为什么低功耗SRAM编译器不是简简单单把平面工艺的库平移过来就行的它必须在单元层面、电路结构层面针对FinFET特性重新设计。3. 低功耗SRAM编译器的省电手段拆解3.1 从架构层省电位线分割与分段字线动态功耗的大头在哪每次读或写都需要把一条位线充放电到足够摆幅。位线越长、挂的单元越多位线电容就越大充放电的功耗就越高。这是SRAM动态功耗的根本来源。低功耗编译器的第一个杀招就是位线分割。把一根长位线切成若干短段每次访问只激活目标段而不是整条长位线。配合分段字线只有被选中的那个分块的字线才会拉高其他分块的驱动器保持关闭。等效于把每次访问的电容负载缩到几十分之一。我见过某些实现里还支持“列选择信号”去进一步关断未选中的列。这些结构的组合本质上都是冲着同一个目标去减少每次访问时被充放电的电容总量。3.2 待机省电电源门控与数据保持电路动态功耗讲完了待机功耗的麻烦更大。芯片待机时SRAM不能断电因为数据还得留着但一块大规模SRAM的泄漏电流积少成多会直接决定设备的待机时长。低功耗编译器通常提供两种掉电粒度。一种叫浅睡眠切断外围电路译码器、灵敏放大器、写驱动的电源只保留存储阵列的供电。存储单元本身需要一个特殊的保持电路来维持数据同时还要保证唤醒时数据不丢。另一种叫深睡眠整个宏都断电数据完全丢失但代价是唤醒后要重新加载数据。到底用哪种取决于系统能不能接受数据重载。此外还有一类更细密的做法把整个SRAM切分成多个独立电源域按需唤醒其中几个这就是所谓细粒度电源管理。编译器把它固化到IP规格里系统侧通过一组控制信号就能管理而不是靠外部去加一堆离散的电源开关。3.3 读写辅助电路让低电压下也能稳定读写低电压是省电最直接的路径功耗跟电压的平方成正比。但电压降下来以后SRAM单元很容易出现读写不稳定。这时候就需要辅助电路出手。读辅助常见的手段是位线预充电压可调或者读出时给灵敏放大器多一点偏置让小信号更快被识别。写辅助更关键低电压下6T单元写入时可能拉不翻内部节点。常见做法包括负位线写辅助把位线短暂压到地以下一点、写驱动电压提升、或者字线电压降低。这些辅助电路平时不工作只在检测到低电压条件时开启避免额外的功耗开销。好的编译器会在datasheet里给出不同电压点、不同工艺角下的推荐辅助配置你不需要懂内部电路细节只要按着推荐参数配就行。3.4 编译器层面的“隐藏”优化多阈值混合与功耗模式接口还有一个容易被忽视的点是晶体管的阈值电压选择。库里有高阈值HVT、标准阈值SVT、低阈值LVT多种器件。低阈值器件快但漏电大高阈值器件漏电小但慢。编译器在生成单元阵列时会依据你给出的频率和功耗目标在时序关键路径上用LVT在非关键路径和存储阵列大量使用HVT做一次自动化的漏电-时序权衡。这还只是静态优化。真正的低功耗编译器还会把低功耗模式做成标准接口比如一组电源控制引脚和一个状态寄存器。软件在运行时可以动态切换电压频率或者让某块SRAM进睡眠、保持、唤醒。编译器的价值就在于把这些复杂的电源管理逻辑封装成可靠的标准模块让SoC集成者按几根引脚或几个寄存器位就能控制。我自己在集成类似IP时最深的感受是低功耗系统的成功一半靠IP的能力另一半靠系统侧能不能把功耗模式用好。4. 实操视角16nm FinFET低功耗SRAM的集成与评估4.1 先看编译器输出物的“体检报告”不管用哪家的编译器生成完IP以后第一件事不是直接放进后端而是先检查交付物和数据手册。一份合格的SRAM编译器交付包主要包含以下几类文件我列个清单方便对照检查。文件类型作用集成时怎么用Liberty.lib时序、功耗、逻辑功能模型供综合、STA、功耗分析使用LEF.lef物理抽象信息包含pin位置、blockage供布局布线使用GDS.gds完整版图数据最终物理实现、DRC/LVS签核Verilog model行为级仿真模型RTL仿真、验证环境SPICE网表晶体管级网表详细时序/功耗复核、可靠性分析Datasheet关键参数、时序图、功耗表格、推荐工作条件全流程参考拿到这些文件后我建议先花半小时把datasheet从头翻一遍别急着跑流程。重点看几组数据不同电压、频率、功耗模式下的功耗数字读写的建立时间和保持时间以及工作电压范围。这些数字直接决定这颗IP能不能在你的系统里正常工作。4.2 功耗评估要拆开算不能只看一个总功耗很多工程师拿到功耗报告就看一个总功耗数字这是很危险的。SRAM的功耗必须分场景拆开算。待机场景下看漏电和保持功耗活跃场景下看读写动态功耗睡眠唤醒场景下看唤醒时间和唤醒能量。以一颗电池供电的IoT SoC为例它的工作循环可能是几十微秒的活跃然后进入几秒的睡眠。如果只优化活跃动态功耗而忽略睡眠漏电整体续航依然会稀烂。反过来如果睡眠漏电压得很好但每次唤醒要花十几微秒和大量能量频繁唤醒的场景又会被打回原形。我常用的方法是搭建一个场景功耗表把芯片的典型工作状态列出来每个状态占多少时间、每块SRAM该用哪种功耗模式、对应功耗是多少然后做加权平均。这套方法论比盯着峰值功耗靠谱得多。编译器datasheet里的功耗表格正好可以用来填这个表——但前提是你得知道它的功耗数字是怎么测的工作电压、工艺角、温度、数据翻转率都要对齐。4.3 集成低功耗模式注意电源域和状态机设计低功耗SRAM不是光把IP放进网表就行。它的睡眠、保持、唤醒信号需要和片上的电源管理单元PMU或电源管理固件握手。常见的坑有两类一类是电源域划分不对SRAM的隔离单元isolation cell和电平转换器level shifter没配齐睡眠时信号悬空导致数据损坏甚至穿通电流另一类是唤醒时序没做对电源稳定之前就发访问请求IP直接罢工。我的建议是在RTL阶段就定义好每个SRAM宏的电源状态编码和状态切换时序并且用UPF统一电源格式把这些电源意图描述清楚。这样后端工具才能自动插入隔离和电平转换单元静态时序分析也能覆盖跨域路径。不要等项目做到后端才想起来低功耗模式怎么接那时候改起来成本极高。实测下来凡是低功耗集成翻车的项目几乎都是在电源控制时序上吃了亏。4.4 常见问题速查结合我在多颗SoC上集成SRAM的经验整理几个高频问题遇到类似情况可以直接照着排查。现象可能原因排查方向数据读出来是乱的读辅助未使能/时序违规检查读写时序、电压是否在规格范围内睡眠唤醒后数据丢失保持电路未正确上电/隔离缺失检查保持电源域和隔离单元低电压写失败写辅助未配置核对datasheet写辅助推荐配置漏电功耗比预期高很多多阈值分配不合理/功耗模式没切到位检查编译器选择的器件阈值、预热时间唤醒时间太长电源稳定时间计算过于乐观在实测前按仿真余量预留唤醒窗口还有一条进阶建议在硅片回来后不要只测功能。专门写一段测试代码遍历所有功耗模式活跃、浅睡、深睡、唤醒检测每个模式下的电流值和状态保持情况。这组数据比任何仿真都值钱它不仅验证了这颗IP还能反过来校准你的场景功耗模型。我第一次做这类测试时发现特定温度下浅睡电流比仿真高了近一倍查到最后是唤醒信号毛刺导致部分阵列反复进出睡眠状态。这种问题光靠仿真几乎发现不了。5. 关于低功耗Memory Compiler我的一些判断和心得5.1 低功耗编译器解决的是“默认节省”的问题传统的SRAM设计流程里低功耗往往是事后优化先按性能要求生成SRAM然后在外围加电源管理加时钟门控加电压域控制。这种做法不是不行但问题是每一次优化都在“跟库的默认行为作斗争”。比如编译器默认把所有单元的位线都充满电你却希望它只充目标段这就没法通过配置实现只能回炉改设计。而sureCore这类专做低功耗的编译器思路是把低功耗做成生成器的固有属性。单元选择、外围电路设计、功耗模式接口一开始就奔着省电去。你填参数时就能看到不同配置下的功耗差异可以在架构阶段就把功耗定下来。这种“默认节省”的思路对低功耗SoC团队来说非常香因为省掉的不只是功耗还有大量后端调优的人力时间。5.2 选型时建议关注的三个指标如果你正在评估16nm FinFET低功耗SRAM编译器我建议重点盯三个指标别被厂商的花哨宣传带偏。第一个是保持电压retention voltage。就是进入睡眠保留数据时存储阵列最低能降到多少伏。这个值越低睡眠功耗越好看。但要注意它随工艺角、温度的变化留足余量。第二个是功耗模式切换的毛刺和时序。从活跃切到睡眠再从睡眠切回活跃中间会不会出现数据损坏、会不会有额外浪涌电流这些细节最容易出问题。第三个是编译器在不同容量、位宽下的面积效率。同一个编译器64KB的宏可能很优秀但生成2MB的大宏时面积可能比竞品多10%。千万别只看一个点就拍板要把你实际用到的配置都跑一遍再做决定。5.3 最后分享一个小经验每次用编译器生成SRAM我都会把生成时的参数配置留档和最终交付的datasheet、lib文件放在同一个版本目录里。听起来是小事但实际帮过我大忙——有一次芯片回来后发现某块SRAM时序收敛不了回查才发现当时生成时把工作电压设高了0.05V时序和功耗模型全按高电压点签的核硅片上电压一跌就出问题。如果当时没留档这个问题够我查两周。低功耗记忆编译器这个东西本质上是把“懂SRAM设计的人”的经验固化成了“人人可用”的工具。但工具再好最后还是得靠你用正确的流程、正确的场景假设去驱动它。16nm FinFET这个节点给低功耗设计提供了很好的工艺基础而像sureCore这类编译器则是把工艺优势转化成实际省电效果的关键一环。对正在做IoT、可穿戴或者边缘AI SoC的团队来说花点时间把SRAM的功耗配置吃透收益远比多调两版逻辑综合来得大。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价