资讯动态

芯片逆向工程全流程:从版图提取到电路仿真

发布时间:2026/10/6 18:27:19 来源:尧图企业网站定制
芯片逆向工程听起来像间谍片里才会出现的操作但实际上它一直是半导体行业里一门务实的技术活。我最早接触这个方向是因为做失效分析——某款电源管理芯片在客户端频繁烧毁原厂手册只给了功能框图想要定位到具体是哪一颗管子先击穿唯一可行的路子就是把这颗芯片剖开逐层看、逐层量。那一趟流程跑下来基本就是芯片逆向工程的完整闭环从物理版图到电路网表再到行为仿真。后来这个技能又用在专利侵权分析、竞争产品调研、老芯片复产等场景里越用越觉得这套方法论值得好好梳理一遍。这篇文章我会基于自己实际跑过的项目经验把芯片逆向工程从版图提取到电路仿真的全流程拆开讲适合刚入行做失效分析、IC设计验证、专利分析的朋友也适合对芯片内部结构好奇、想了解硬件安全的技术爱好者。全文不会只讲概念我会把每一步用什么工具、遇到什么坑、怎么判断结果对不对都尽量讲透。1. 芯片逆向工程到底在做什么很多人一听逆向工程四个字第一反应是抄板、仿制、破解。实际上在正规的工程场景里芯片逆向的核心目的远比抄更丰富——有时候是为了确认竞争对手的产品是否侵犯了自己的专利有时候是为了分析一颗失效芯片内部哪里出了问题有时候是因为一颗老芯片停产多年、找不到原厂资料只能通过反推内部电路来设计兼容替代方案。用途不同流程侧重也会不一样但基本思路是共通的。1.1 不是复制是读懂正向设计是从需求到行为从行为到RTL代码从RTL综合出门级网表再从门级网表布局布线变成版图最后流片。逆向工程完全反过来从物理芯片出发把一层一层的版图照片拼出来识别出里面的晶体管、电阻、电容、连线关系还原出电路网表再通过仿真确认这个网表的功能是否符合预期。听起来像照着重画一遍但实际难度要大得多。比如一颗数字芯片面积可能只有几个平方毫米但里面集成了几百万个晶体管一颗模拟芯片虽然管子数量少但每一个管子的宽长比、每一个电阻的阻值都可能直接影响电路性能。想让还原出来的网表能跑通需要对半导体工艺、器件物理和电路设计都有足够的理解。我常跟团队里新人打一个比方给你一台拆散的机械手表让你在不看图纸的情况下把所有齿轮、发条、擒纵叉的位置和咬合关系记录下来再画出一张能解释为什么它能走时的原理图。芯片逆向比这个复杂的地方在于手表的零件是物理可见的而芯片里的零件是埋在十几层金属和介质层底下的你得一层一层剥开才能看见。1.2 完整流程闭环概览一次标准的芯片逆向工程大体可以分成五个阶段样品准备与去封装、图像采集与层堆叠重建、版图提取与器件识别、网表提取与电路还原、电路仿真与功能验证。前两个阶段解决怎么看得见的问题中间两个阶段解决怎么画得对的问题最后一个阶段解决怎么确认没搞错的问题。很多初学者容易忽略最后一个阶段觉得版图都画出来了、网表都提出来了任务就算完成了。但提取出来的网表可能有一堆错误——比如过孔认错、晶体管宽长比量错、两层金属之间的连接关系搞反。这时候仿真就是最好的照妖镜把网表放进仿真器里跑一下如果功能波形和预期不一致说明前面某个环节出了问题需要回头修版图。所以我在实际项目中一定会把仿真当作整个流程的终点和验收标准而不是可有可无的附加步骤。2. 从实物到图像去封装与图像采集芯片逆向的第一步是把一颗完整的封装芯片变成一组清晰、对齐、覆盖每一层版图的图像。这一步最容易被低估实际上它决定了后面所有工作的质量。图像模糊、层间错位、对焦不准都会让后续的版图提取变得寸步难行。2.1 化学开封与逐层去层拿到一颗芯片首先要做的是去封装Decap。常见的封装形式有塑料封装环氧树脂和陶瓷封装塑料封装一般采用发烟硝酸加热处理温度控制在60到80摄氏度左右用滴管小心地将酸滴在芯片表面将环氧树脂溶解直到露出内部的 die。这个过程需要经验和耐心酸加多了可能伤到芯片表面的钝化层和金属焊盘加少了树脂又去不干净。去封装之后芯片表面会有一层钝化层通常是氮化硅或磷硅玻璃需要用反应离子刻蚀RIE或者湿法刻蚀去除。接下来要面对的是一个多层结构现代芯片通常有6到12层金属连线层与层之间是介质层二氧化硅或低介电常数材料。为了看清楚每一层金属和底层的晶体管需要一层一层地磨掉或者刻蚀掉介质层每去掉一层就拍一组照片。去层的方法主要有两种一种是化学机械抛光CMP可以把表面磨得非常平整适合需要大面积观察的场景另一种是反应离子刻蚀选择性强可以只去掉介质层而不损伤金属。我个人的习惯是如果只是做功能级逆向CMP效率更高如果要做精细的失效分析RIE更可控不容易把细小的金属连线冲断。2.2 显微镜图像采集与拼接去层完成后就需要用显微镜把芯片表面拍摄下来。低倍数光学显微镜适合看整体布局和模块划分高倍数光学显微镜或扫描电子显微镜SEM则用来观察细节比如晶体管的沟道长度、金属连线的走向和通孔的位置。SEM的景深更大、分辨率更高但设备成本也高而且需要对样品做导电处理光学显微镜操作简单对绝大多数模拟芯片和小规模数字芯片已经够用。由于显微镜视野有限需要按网格逐块拍摄再用软件拼接成一张完整的大图。我常用的是 OpenCV 加特征点匹配的方式拼接也可以用 ImageJ 的插件来做。拼图的难点在于层与层之间的套准因为每一层都是单独拍摄的层与层之间可能会有旋转和平移误差需要在软件里做对齐。我踩过最大的坑是前面几层拍的时候没做定位标记到后面想对齐却发现完全没有参考点。后来我在样品角落用激光打了一个十字标记每一层拍摄时都带上这个标记对齐就变得简单多了。3. 版图提取从图像到几何图形图像有了接下来最关键的一步是把图像里的物理结构转换成版图几何图形——也就是 GDSII 格式的图层。这是整个逆向流程中最耗时、最考验耐心的环节也是决定最终电路还原准确度的核心。3.1 图层分离与层次标定拿到一张芯片截面的照片你看到的其实是多个物理层的叠加有源区、多晶硅、金属层、接触孔、通孔。要在软件里画出版图首先得知道每一层在照片里长什么样。这需要先做一层层次标定在已知工艺节点的芯片上对照标准单元的版图特征确认照片里哪个灰度对应哪一层。以一个 0.18 微米工艺的芯片为例最底下的衬底上是浅沟槽隔离STI和有源区AA上面是第一层多晶硅Poly然后是接触孔CT再往上是金属一层M1、通孔V1、金属二层M2以此类推。在显微镜照片里不同的材料因为导电性和高度的差异会表现出不同的明暗和颜色。金属层通常很亮多晶硅偏暗有源区有时候会因为掺杂浓度不同呈现不同颜色。我常用的工具是 KLayout它是一个开源版图编辑器支持 GDSII 和 OASIS 格式可以自定义图层颜色和名称。在 KLayout 里我会先建立一套图层规范比如把有源区放在 layer 1多晶硅放在 layer 2金属一放在 layer 3等等。每一层照片对应的结构就在对应的图层上用多边形画出来。这个过程很像给卫星照片做地理标注——照着图像轮廓描边把每一栋建筑、每一条路都归类到正确的图层里。3.2 器件识别与标准单元匹配画出版图几何之后下一步是识别出里面的基本器件MOS 管、电阻、电容、二极管、双极型晶体管等。识别 MOS 管有个很实用的口诀看到有源区 跨过有源区的多晶硅栅就是管子。多晶硅跨过有源区的部分就是栅极有源区在栅两侧的部分就是源漏区。管子的宽长比 W/L 可以直接从版图上量出来沟道宽度 W 就是多晶硅与有源区交叠的宽度沟道长度 L 就是多晶硅在沟道方向上的尺寸。这两个参数直接决定了管子的驱动能力和阈值特性是后续仿真必需的关键参数所以量的时候必须尽量精确。对于数字芯片更高效的做法是标准单元匹配。绝大多数数字芯片内部都是标准单元库搭建的比如反相器、与非门、触发器、加法器等。这些单元的内部版图结构是固定的你只要从芯片图像里认出哦这坨结构和 NAND2X1 的标准单元完全一致就可以直接用标准单元库里的逻辑功能替代而不需要逐管绘制。这正是把几百万个晶体管的芯片逆向简化成几万个门级单元的关键。3.3 手工提取与自动化工具配合版图提取的自动化程度一直是个热点。业界和学术界有不少研究尝试用图像识别和机器学习来自动识别器件和连线但实际效果还不能完全替代人工。我的经验是自动化的工具可以拿来辅助比如用脚本批量检测 Metal 层的矩形块、自动生成多边形但最关键的器件识别和层次判断还是要靠人眼确认。因为芯片图像里的干扰因素太多了CMP 之后表面会有划痕RIE 刻蚀可能残留聚合物金属层可能因为电子迁移出现小洞这些都会让自动识别的算法看走眼。我在实际项目中采用的工作流是先用自动化工具做粗提取把版图框架搭出来然后人工在 KLayout 里做逐层复查和修正。这个流程虽然听起来啰嗦但效率其实最高——纯手工从头画几层金属就要画好几天全自动识别后面修错的时间反而更长。4. 网表重建与电路还原版图提取完成之后拥有的只是一堆几何图形还没有电路的概念。网表重建就是要从这些几何图形中提取出器件之间的连接关系生成一个可以被 EDA 工具读取的电路网表。4.1 从版图到 SPICE 网表最直接的转换方式是版图 vs 原理图一致性检查LVSLayout Versus Schematic工具的反向使用。正向着 LVS 是拿版图和原理图做比对看两者是否一致逆向工程里没有原理图所以需要从版图直接抽取网表。KLayout 本身有 netlist extraction 的接口配合一些脚本可以识别出 MOS 管、电阻、电容这些器件以及它们之间的连接关系输出成 SPICE 网表格式。当然这里有个前提文章开头我提到过你要能看懂每一层结构是什么。对于模拟芯片比如某个电源管理芯片你在版图里看到一个大尺寸的 MOS 管沟道宽度 W 可能有几千微米一般就是功率管看到两个尺寸完全一致的 MOS 管靠在一起很可能是差分输入对看到一串多晶硅电阻可能是分压电阻或者反馈电阻。这些功能推断需要你对常见电路拓扑有足够的敏感度。提取出来的 SPICE 网表大致长这样* extracted netlist M1 VOUT VIN VDD VDD pmos_rvt W2u L0.5u m4 M2 VOUT VIN VSS VSS nmos_rvt W1u L0.5u m2 R1 VIN N1 10k C1 N1 VSS 2p VDD VDD 0 DC 3.3这里每一行代表一个器件字段依次是器件名、连接的节点、器件类型和尺寸参数。看到这种格式很多人会想这不就是一个普通的 SPICE 网表嘛没错逆向工程的产物本质上就是一个目标芯片内部的未知网表后续你要做的就是通过各种方法确认这个网表是合理的、功能是正确的。4.2 管级、门级、模块级的分层还原思路不管原始芯片是数字、模拟还是数模混合还原网表都可以分层进行管级transistor level、门级gate level、模块级block level。管级还原是最底层的即直接按晶体管和被动元件的关系列出网表适合模拟电路、I/O 电路、电源管理电路等。门级还原则是把 MOS 管串并联结构先抽象成逻辑门再把逻辑门抽象成寄存器传输级RTL行为适合数字逻辑部分。模块级还原则是在门级基础上进一步识别出这是一个 UART 模块这是一个 PWM 控制器这是一个带隙基准源等。这三个层级并不是严格递进的关系实际做的时候是交替进行的。比如我在分析一颗数模混合芯片时会先看整体布局图根据电源走线的密度、模拟管子的尺寸分布、数字标准单元的分布大致划分出模拟区和数字区。然后针对模拟区做管级提取针对数字区做门级匹配等到两部分网表都出来后再通过它们在版图上的物理连接关系合并成一张完整的芯片级网表。这里有一个团队协作方面的经验芯片逆向工程往往需要工艺工程师、版图工程师、电路设计工程师一起配合。版图工程师擅长画图但可能对电路功能不敏感电路设计师能快速认出电路结构但可能对图像上的工艺伪影不敏感。我见过很多项目卡在版图画出来了但网表跑不通这个环节原因往往就是画图的人不懂电路、懂电路的人不参与版图确认。所以我会要求电路设计师在版图提取阶段就介入至少每个模块主要负责人要到现场看几层关键图。5. 电路仿真验证还原结果的正确性网表提取出来只是以为正确只有通过了仿真验证才算真正还原成功。仿真这一步的核心目的是把你还原出来的网表放入 EDA 工具中输入激励信号观察输出波形判断它是否与原芯片的行为一致。5.1 仿真工具选型与适用场景市面上用于芯片逆向后验证的电路仿真工具主流是 SPICE 系工具包括商用 Synopsys HSPICE、Cadence Spectre以及开源免费的 ngspice、LTspice 等。针对反向提取的网表开源工具基本够用而且不需要授权适合个人和小团队。LTspice 在模拟电路仿真上收敛性很好界面友好非常适合快速验证小规模的模拟模块ngspice 是命令行工具脚本化能力强适合批处理大量网表。有一些热词里提到的在线仿真工具比如 Falstad 电路仿真、wokwi 电路仿真也能派上用场但要分场景。Falstad 的交互式模拟电路仿真器适合画原理图快速看波形特别适合 RC 振荡电路仿真、Buck 电路仿真这类教学级验证Wokwi 侧重的则是嵌入式数字电路比如 Arduino 和 ESP32 的仿真。但这些在线工具不能直接吃 SPICE 网表通常是人工把提取的电路等效过程重画一遍适合做概念验证不适合做精确验证。我的习惯是先用 LTspice 或 ngspice 对提取的 SPICE 网表做严格仿真拿到精确波形和参数再用 Falstad 这类在线工具做演示和交叉验证用可视化结果跟团队成员交流。两者互补前者保准确后者保直观。5.2 仿真参数提取与模型选择把提取的 SPICE 网表塞进仿真器之前还有一件重要的事为器件指定合适的模型和参数。如果是标准单元库里的管子可以通过工艺文件查到对应的 MOS 模型但对于一颗未知工艺的芯片你只能根据照片里量到的 W/L 和沟道长度估算器件的阈值电压、栅氧厚度等参数。这里有个常见的误区有人会拿一个 0.18 微米工艺的 MOS 模型去仿真一颗实际是 0.35 微米工艺的芯片导致结果完全不靠谱。我的经验是先通过芯片的金属层间距、最小沟道长度、电源电压等特征大致锁定工艺节点然后从常用工艺库中选择最接近的模型再根据版图尺寸做参数修正。比如照片里量到一个管子的沟道长度是 0.35 微米就知道不太可能是 0.18 微米工艺应该用 0.35 微米或 0.5 微米的模型参数。对于电容和电阻直接把版图上量到的几何尺寸换算成容值和阻值即可。电阻值用方块电阻乘以方块数电容值用单位面积电容乘以面积。这些值可以直接写入网表Rfb VOUT N1 120k Cin N1 VSS 3.5p5.3 功能仿真与对比验证拿到参数完整的网表后开始跑仿真。不同类型的电路仿真策略不一样。对于电源类芯片我会做直流工作点分析看各节点的静态电压是否正确再做一个瞬态仿真观察上电启动、负载跳变时输出电压的响应必要时还要做 AC 分析看环路稳定性。对于数字逻辑我会对门级网表加测试向量跑一遍逻辑仿真与原芯片的数据手册真值表进行对比。如果仿真结果和数据手册对不上而且反复检查网表和参数都没有问题那么恭喜——你很可能发现了原芯片手册里没写的隐藏行为这在专利分析和安全研究里反而是很有价值的发现。对于 RC 振荡电路这类需要起振的电路仿真时有个小技巧直接跑瞬态仿真往往要等很久才能看到稳定振荡因为起振过程是从噪声或者初始不平衡慢慢长大的。这时候可以在仿真前给电容或节点加一个初始条件IC或者在网表里加一个脉冲激励让电路快速进入稳态振荡。这也是为什么热词里有那么多人在搜RC 振荡电路仿真——起振慢、不振荡是这类仿真最常见的坑但本质原因往往只是初始条件设置的问题。6. 实战示例一个 RC 振荡器芯片的逆向全流程前面讲的都是方法论这一节我用一个具体的实战案例把整个流程串起来。假设我们要逆向的是一颗低成本的 RC 振荡器芯片它的功能很简单上电后在输出引脚产生一个固定频率的方波频率由内部电阻电容决定。这类芯片常用于时钟产生、LED 闪烁、定时器等场景。6.1 从版图中认出 RC 振荡器结构经过去封装、去层和图像采集后我们在版图里可以看到芯片面积很小大概只有几百微米见方。放大后能发现几个典型特征一个面积较大的多晶硅电阻条呈现反复折叠的形状这是为了在有限面积内实现大阻值旁边有一个金属-绝缘层-金属MIM电容或者 MOS 电容面积同样比较显眼还有几个尺寸较小的 MOS 管构成反相器和施密特触发器。从拓扑上看多晶硅电阻的一端接电源另一端接到电容的一个极板电容的另一个极板接地中间节点同时连接到一个反相器的输入端。这就是经典的 RC 充放电电路——电阻给电容充电反相器检测到电压超过阈值后翻转输出再由反馈回路控制放电形成振荡。看到这种结构基本可以判断内部是一个 RC 振荡器。6.2 提取器件参数估算振荡频率接下来用 KLayout 里的测量工具量出电阻条的长宽。假设多晶硅电阻的方块阻值是 1 千欧每方块量出来的电阻条总共有 120 个方块那总阻值就是 120 千欧。再量电容面积假设单位面积电容是 1 飞法每平方微米电容面积为 2000 平方微米容值就是 2 皮法。根据 RC 振荡器的一阶估算公式频率大约在 1/(2.2 × R × C) 到 1/(2 × R × C) 之间具体系数取决于施密特触发器的阈值电压。把 120 千欧和 2 皮法代入得到频率大概在 1.8 到 2.1 千赫兹左右。拿到这个估算值之后再看芯片数据手册。如果手册标称输出频率是 2 千赫兹那么你的提取参数大概率是准确的如果手册标称是 20 千赫兹说明你某个地方量错了或者认错了电容类型需要回去看是不是电阻阻值估小了一个数量级。6.3 搭建仿真验证频率最后把提取的网表写成一个可仿真的 SPICE 文件用 LTspice 或 Falstad 做验证。LTspice 里建一个电压源做电源接入 RC 网络和反相器模型跑瞬态仿真 5 毫秒观察输出波形。如果仿真出来的振荡频率在 2 千赫兹左右且波形占空比合理说明整个逆向链路是通的如果仿真结果和预期偏差超过 20%就需要回头检查是参数提取误差还是电路拓扑判断有误。这个过程我在多个项目里重复过很多次最大的感受是电路仿真是逆向工程里最讲道理的一步——版图提取可能有歧义器件识别可能靠经验但仿真结果是不会说谎的。仿真跑不通、频率对不上一定是前面某个环节出了问题只要顺着仿真波形逆推通常都能找到问题所在。7. 常见问题与排查技巧实录这一节我把这些年实际踩过的坑、排过的雷整理成一份问题速查表希望帮你省掉一些不必要的摸索时间。问题现象可能原因排查方法与解决建议拼接后的全景图有明显接缝、错位拍摄时载物台平移不准缺少定位标记每层拍摄前加激光定位标记用 OpenCV 特征点匹配重新拼接同一层照片里金属线和介质层难分辨CMP 后表面反光不一致或刻蚀残留改拍 SEM 并使用背散射模式观察或重新磨样提高平整度识别出的 MOS 管数量远大于预期把并联管的重复单元当成多个独立管检查相同尺寸、相同连接的管是否构成并联关系用 m 参数合并SPICE 网表仿真不收敛节点浮空、初始条件未设置、模型参数不匹配检查网表里是否有未连接的节点设置初始条件更换最接近工艺模型出现应该振荡但仿真波形是平的RC 振荡器起振慢瞬态仿真时间不够给电容加 IC 初始电压或在网表中加入脉冲激励打破静态平衡数字部分的门级功能仿真与手册不符标准单元匹配错误或连线提取错位回查标准单元库的版图模板核对 Metal 层通孔连接关系电阻值估算偏差大导致工作点不对方块电阻率假设错误电阻条宽度量错用同芯片上多个已知电阻反推方块电阻取最稳定的一组参数除了表格里的问题还有一个经验想特别强调逆向工程里的安全性问题。做这种工作一定要守住合规边界只针对自己有权分析的芯片比如自家产品、已获得授权的样品、公开的教学芯片结果只用于失效分析、专利分析、学术研究等合法用途。我在行业里见到过因为一个不小心把客户保密芯片的信息外泄导致整个团队背上处分的案例。守住红线这行才能走得长远。最后再分享一点个人体会。芯片逆向工程最迷人的地方不是我知道了别人的电路长什么样而是我用一条从图像到波形的完整链路真正读懂了一颗芯片的设计思路。这条链路里的每一步都像在跟一位素未谋面的电路设计师对话他为什么在这里放一个倒比管为什么把这颗电阻做那么长为什么用这种拓扑实现振荡——这些问题很多时候在仿真结果出来的那一刻你会突然找到答案。这个过程是单纯的芯片设计工作很难带给你的满足感。

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

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

免费获取报价 →
↑