1. 从硅片照片到电路图一场硬核的数字考古如果你和我一样是个对八九十年代街机、游戏机内部那些神秘“黑疙瘩”充满好奇的老玩家或硬件爱好者那么“硅片逆向工程”这个领域对你来说绝对是一片充满宝藏的硬核乐园。我们不是在谈论用逻辑分析仪去嗅探现成芯片的引脚信号那太“表层”了。我们干的是更底层、更物理的活儿把那些封装好的定制芯片ASIC开封用高倍显微镜拍下其硅片表面的金属连线照片然后像侦探一样一根线一根线地追踪一个晶体管一个晶体管地辨认最终还原出它的完整电路原理图甚至用硬件描述语言Verilog将其“复活”。这听起来像是科幻情节但正是Furrtek等一群顶尖极客在“SiliconRE”项目中日复一日进行的工作。他们的目标是那些早已停产、文档缺失、承载着无数经典游戏灵魂的定制芯片比如Konami的“005885”精灵控制器、Capcom的“86S105”图形处理单元或是SNK Neo Geo主板上的“NEO-ZMC2”。这些芯片是那个黄金时代的“武功秘籍”理解了它们就等同于掌握了那些经典画面和音效是如何从无到有被创造出来的核心机密。对于复古游戏保存、FPGA硬件仿真开发乃至纯粹的硬件考古兴趣这项工作都有着不可替代的价值。无论你是想深入理解硬件设计的老手还是对数字电路逆向充满好奇的新人跟随他们的足迹都能窥见一个由金属、硅和逻辑构成的迷人世界。2. 逆向工程的核心武器库方法论与工具链解析逆向一颗定制芯片绝非仅凭一腔热血就能完成。它需要一套严谨的方法论和一系列特殊的工具更像是一场结合了材料科学、显微成像和数字逻辑推理的综合性实验。2.1 物理层揭秘开封与成像第一步是“开棺验尸”——芯片开封。商用芯片通常被环氧树脂或陶瓷封装严密保护。我们需要使用发烟硝酸或专用的激光开封机小心翼翼地去除封装暴露出指甲盖大小、甚至更小的硅晶粒。这个过程极具破坏性且危险强酸必须在专业的通风橱内进行。硅晶粒本身是半透明的我们真正需要观察的是其表面的金属互连层。在光学显微镜下这些金属走线会呈现出不同的颜色取决于材料和厚度。为了获得更高分辨率和景深项目通常采用特制的显微照相系统通过精确控制步进电机对硅片进行棋盘格状的逐区域拍摄最后再用软件如Microsoft的Image Composite Editor或开源的Hugin拼接成一幅数亿像素级的完整芯片“地图”。注意光照角度至关重要。侧向照明可以突出金属线条的立体边缘而垂直照明则更适合观察接触孔和不同材料层的对比。有经验的操作者会通过调整光源让不同功能的电路结构如标准单元、存储器阵列、模拟模块呈现出最清晰的纹理。2.2 逻辑层重构从连线到网表拿到高清硅片照片后真正的逆向工作才开始。这就像拿到一张没有图例的超级复杂城市道路卫星图你需要认出哪条是电源“主干道”VCC/GND哪些是数据“公交线”数据总线哪些是控制“信号灯”控制信号。电源与地线识别这是基石。通常最宽、遍布全芯片的金属带就是电源和地。它们会连接到每个逻辑单元的特定引脚。先标出它们就建立了坐标参照系。标准单元库匹配80-90年代的芯片大量使用门阵列或标准单元设计。这意味着芯片内部大量重复使用预先设计好的逻辑功能块如与非门、或非门、触发器、缓冲器等。逆向者的宝贵财富就是已知标准单元的版图库。Furrtek在项目中整理的Cells目录就是这样的宝藏。当你看到一片区域的结构与你库中的“FD2 双D触发器”单元完全匹配时你就可以直接标注而无需再去分析其内部每个晶体管。手工追踪与标注对于无法直接匹配的定制部分如大型PLA、数据通路、模拟电路就需要手工操作。使用图像软件如GIMP在不同图层上用不同颜色的线条一丝不苟地描出每一根金属线的走向标记每一个晶体管PMOS和NMOS根据与衬底的连接关系区分并记录它们的连接关系。网表生成与整理将所有连接信息提取出来形成一个晶体管级网表。这只是一个连接关系的列表。随后需要根据逻辑功能将这些晶体管组合成更高抽象级的逻辑门与门、或门等再进一步整理成门级网表。这个过程极度考验耐心和空间想象力。2.3 从网表到理解仿真与验证得到门级网表后工作并未结束。这只是一份“静态”的电路连接图它是否正确功能是什么需要验证。逻辑仿真将网表转换成Verilog或VHDL这样的硬件描述语言。虽然是从底层反推上来但现代EDA工具可以对其进行仿真。你需要根据芯片的引脚定义编写测试向量输入信号序列观察输出是否符合预期。交叉验证这是检验逆向正确性的黄金标准。如果这颗芯片用于已知的游戏系统如Neo Geo的音频处理芯片那么你可以将逆向出来的逻辑在FPGA上实现并替换到原机中进行实测。如果游戏能正常运行音乐播放正确那你的逆向就成功了99%。项目列表中很多“Done”的状态正是通过了这样的实战检验。文档化最终产出不仅仅是网表或代码。一张清晰、标注完善的电路原理图Schematic是必不可少的。它让后来者能直观理解芯片架构。Furrtek分享的正是这些宝贵的原理图。3. 实战剖析以Konami 005885芯片为例让我们深入一个具体案例看看上述方法论是如何落地的。Konami 005885是80年代末期众多经典街机游戏如《赤色要塞》、《魂斗罗》的核心图形芯片之一负责背景瓦片Tile和精灵Sprite的调度与控制。3.1 芯片定位与功能推测在开始逆向前需要从系统层面理解它。通过查阅主板图纸和现有MAME模拟器代码可以知道005885通常与视频RAM、颜色RAM、以及另一颗芯片如007121协同工作。它接收来自CPU的指令和数据输出的是控制瓦片和精灵读取的地址信号、以及优先级选择等控制信号。有了这个高层概念逆向时就有了目标去找寻与地址线、行/列计数器、优先级逻辑相关的电路结构。3.2 硅片照片中的线索挖掘拿到005885的硅片照片后首先进行宏观观察寻找规律性结构大片的、重复的网格状区域很可能是SRAM用于存储临时数据或查找表。寻找总线结构一组平行、等间距、穿越芯片大部分区域的细线极有可能是内部数据总线或地址总线。识别I/O区域芯片边缘的焊盘PAD周围通常有大量的驱动缓冲器大尺寸的晶体管对这些是连接内部逻辑与外部引脚的接口电路。3.3 关键子模块逆向过程行/列计数器这是图形芯片的核心。在照片中你可能会发现一列串联的触发器Flip-Flop其输出通过一系列逻辑门识别为多路复用器或译码器连接到地址线上。通过追踪可以确认这是一个典型的二进制或线性反馈移位寄存器计数器负责生成扫描线的行地址和每行内的像素列地址。精灵链表处理器精灵通常以链表形式存储。逆向中可能会发现一个状态机模块它包含一个当前地址寄存器、一个下一个地址指针寄存器以及控制从显存读取“下一个精灵”数据的逻辑。这部分电路与标准逻辑单元差异较大需要仔细手工追踪。优先级仲裁逻辑当精灵和背景瓦片在同一个像素位置重叠时需要决定谁显示在前。这通常由一个多输入的优先级编码器实现。在版图上这可能表现为一个多层的“与或非”门阵列PLA结构输入是精灵和背景的优先级位输出是选择信号。与存储器的接口找到向外部VRAM发送地址的驱动电路以及从数据总线上接收像素数据的锁存器。这些接口电路通常符合特定存储器的时序要求比如会有生成行选通RAS和列选通CAS信号的时序逻辑。3.4 原理图绘制与功能验证将所有这些子模块的网表整理后使用EDA绘图工具如KiCad或专业的商业软件绘制原理图。绘制过程本身也是二次校验不合理的连接会在绘图时暴露出来。随后编写Verilog模型。这个模型不需要考虑晶体管级的延时只需实现逻辑功能。在仿真中模拟CPU写入控制寄存器然后让模型运行几个帧的扫描时序观察其输出的地址序列是否符合视频RAM的访问模式。更进一步可以将其集成到FPGA实现的整个街机图形子系统中看能否正确渲染出游戏画面。4. 逆向工程中的典型挑战与应对策略即使方法明确实际操作中也是坑洼不断。以下是我从这些项目以及个人实践中总结出的常见难题和解决思路。4.1 成像质量与层间连接问题硅片是立体的有多层金属M1 M2…通过“通孔”连接。光学显微镜照片是二维俯视图下层金属会被上层遮挡。通孔在照片上只是一个小方块有时难以分辨其连接关系特别是当上下层走线颜色对比度低时。对策多角度光源从不同角度打光下层金属的轮廓有时会透过上层缝隙显现。焦平面堆叠拍摄不同焦距的多张照片进行合成可以一定程度上增强不同层的可见度。逻辑推理这是最关键的手段。如果一根线“凭空消失”又“凭空出现”且两端逻辑关联性极强那么中间极大可能性存在一个被遮挡的通孔。结合电路功能进行推测并在原理图中做备注后续通过仿真验证该连接是否正确。参考工艺资料了解该芯片大概的生产年代和厂商如东芝、NEC可以推测其常用的工艺和金属层堆叠顺序辅助判断。4.2 模拟/混合信号模块问题数字逻辑逆向尚有规律可循但芯片中可能集成了锁相环、电压调节器、模数转换器等模拟模块。这些模块的晶体管尺寸、连接方式与数字电路迥异且性能依赖于精确的模拟特性仅从版图还原其精确参数和功能极其困难。对策划定边界首先识别出这部分是模拟模块晶体管尺寸不规则有电容、电阻结构远离数字标准单元区明确其输入输出引脚。结构识别尝试识别基本结构如差分对、电流镜、运算放大器输入级等。这需要一定的模拟电路版图知识。黑盒处理对于逆向目标主要是数字功能的项目可以将复杂的模拟模块暂时视为“黑盒”仅定义其接口行为如“输入时钟输出倍频后时钟”而不深究内部。项目列表中的“时钟发生器”芯片常属于此类。借助专业分析有时需要更高级的分析手段如电子显微镜或者求助于有模拟设计经验的工程师。4.3 工艺变形与缺陷问题几十年前的芯片可能在生产时就有微小缺陷或在开封、清洗过程中受到损伤。照片上可能会出现断线、毛刺、污渍被误认为是电路的一部分或者真正的连线因腐蚀而变得模糊不清。对策多图对比如果同一型号有多个芯片样品对比它们的照片共有的结构才是真实的电路。连续性检查一条线应从驱动端连续地走到负载端。如果中途“断掉”检查上下层是否有通孔转折。如果都没有且逻辑上讲不通则可能是缺陷。电气规则检查在整理网表后可以进行简单的ERC检查例如一个门的输出是否短路到另一个输出PMOS的衬底是否接在了VDD上违反基本电气规则的地方可能就是识别错误或存在缺陷的区域。功能合理性优先最终的判断标准是电路功能是否合理。一个无法解释的奇怪连接如果去掉它整个电路反而能工作那它很可能就是缺陷或污渍。4.4 大规模芯片与时间管理问题一些复杂的芯片如项目列表中“WIP”状态的Konami 053990包含数万甚至数十万个晶体管。纯手工追踪耗时以年计极易让人产生挫败感并中途放弃。对策分而治之根据宏观结构总线、存储器块、密集逻辑区将芯片划分成多个功能区块。逐个击破每完成一个区块都是正向激励。善用脚本工具开发或使用一些半自动化的辅助工具。例如用Python脚本处理图像增强对比度甚至尝试简单的图案识别来标记重复的标准单元。社区协作这正是Furrtek建立项目列表和共享Cells库的意义。多人协作可以分摊工作量并且不同的人擅长不同的模块有人擅长解码逻辑有人擅长存储器结构。设定现实目标不一定非要100%完整还原每一个晶体管。对于超大规模芯片可以先聚焦于接口逻辑和关键数据通路实现其主要功能。一些内部的辅助电路或测试结构可以在后续迭代中完善。5. 成果的应用超越考古的实用价值费尽千辛万苦逆向出一颗三十年前的芯片除了满足“极客的浪漫”还有什么实际用处其价值远超想象。5.1 高精度FPGA仿真与硬件保存这是最直接的应用。模拟器如MAME在软件层面模拟芯片行为但有时会因对硬件行为理解不深而存在误差或漏洞。基于晶体管/门级网表转换出的HDL代码是对原芯片最精确的数学描述。将其用于FPGA实现可以创造出几乎与原件电气行为一致的“克隆体”。修复老化硬件当珍贵的街机主板上的定制芯片损坏且无法购得时可以用FPGA芯片制作一个替代品让老机器重获新生。实现“模拟即原机”像MiSTer这样的FPGA游戏平台其核心追求就是周期精确的硬件仿真。逆向工程提供的精确到门级的模型是实现这一目标的终极保证能完美再现甚至原硬件都因时序微妙差异而存在的“特性”比如某些特殊画面效果。5.2 驱动数字电路设计与教育对于硬件设计学习者而言这些逆向出的原理图是无价的教科书。你可以看到真实的优化技巧工业界如何用最少的门电路实现一个复杂的状态机。经典的架构设计例如如何优雅地设计一个高效的精灵渲染流水线。特定时代的电路风格80年代由于晶体管资源紧张设计者如何“螺蛳壳里做道场”。分析这些经典设计比阅读任何理论教材都更能加深对数字系统架构的理解。5.3 填补技术历史空白许多老公司的设计文档早已遗失。这些逆向工程成果是在为电子游戏史乃至半导体设计史保存第一手的技术资料。它记录了从离散TTL逻辑到大规模定制ASIC的过渡时期工程师们是如何解决图形、声音、交互等复杂问题的。这对于技术史研究者而言是珍贵的原始素材。6. 如何开始你的硅片逆向之旅如果你被这个领域吸引跃跃欲试可以遵循以下路径入门这远比直接买酸开封芯片要安全且循序渐进。6.1 第一阶段知识储备与软件熟悉夯实数字电路基础必须精通布尔代数、组合逻辑、时序逻辑锁存器、触发器、状态机、存储器结构。推荐从《数字设计原理与实践》这类经典教材开始。学习硬件描述语言掌握Verilog或VHDL是必须的不仅要会写更要理解其如何映射到实际的逻辑门和触发器上。这是你将来将网表“翻译”成可仿真模型的关键。熟悉EDA工具链安装并使用开源EDA工具如Yosys逻辑综合、GTKWave查看波形、Icarus Verilog仿真。尝试用Verilog描述一个简单的计数器然后综合、仿真查看RTL图。研究现有成果仔细研读SiliconRE项目中已完成的、相对简单的芯片原理图例如SNK NEO-BUF这种缓冲器芯片。用EDA工具照着原理图输入网表进行仿真理解每一个单元的作用。6.2 第二阶段从“软”逆向到“硬”图像尝试网表逆向找一个有开源网表的小型数字电路例如一个74系列逻辑芯片的SPICE网表练习将其整理、绘制成原理图并写出其Verilog行为模型。这能锻炼你从连接关系抽象出功能的能力。分析公开的硅片照片访问[ siliconpr0n.org ]等网站那里有大量芯片的显微照片。选择一张结构清晰、规模较小的芯片例如一个简单的EEPROM或门阵列尝试在不看任何资料的情况下仅凭图像辨认电源、地线、输入输出缓冲器。使用GIMP或Inkscape进行描线练习。加入社区关注Furrtek、Jotego等人的推特、Patreon参与相关论坛如FPGA Arcade论坛的讨论。这个圈子很小但大家乐于分享。提问前务必先做好功课。6.3 第三阶段谨慎尝试实体操作郑重警告芯片开封涉及强酸和有毒化学品具有高度危险性必须在具备专业防护设备和知识的前提下进行切勿在家庭环境中尝试安全第一如果决心进行物理开封务必接受实验室安全培训准备防酸服、护目镜、防毒面具、强效通风橱和应急冲洗设备。从废弃品开始找一些完全废弃、不值钱的现代芯片如老主板上的IO芯片进行开封练习掌握酸液浓度、加热温度、时间控制的经验。投资成像设备一台带有精密载物台和良好光源的体视显微镜是起步设备。更高级的则需要改装带有电动平台的显微镜用于拼接。贡献而非重复在开始自己的项目前务必仔细查看Furrtek的芯片状态表格和社区动态。选择“Stalled”或全新的芯片进行研究避免重复劳动并积极分享你的进展和Cells发现。这条路漫长而艰辛但每还原出一条走线每确认一个逻辑门每让一颗沉寂多年的芯片在仿真中重新“跳动”起来所带来的成就感是无与伦比的。你不仅仅是在分析电路你是在与三十年前的工程师隔空对话在硅的荒漠中一片一片地拼凑起数字文明的化石。这就是硅片逆向工程的终极魅力。