1. 从一篇综述说起IC逆向到底在逆什么第一次看到“IC逆向综述”这个题目很多人脑子里冒出来的画面大概是拿一块芯片磨掉封装放在显微镜底下拍照然后一层一层扒开金属层最后把版图抄出来。这个印象不算错但只覆盖了整条链路里最靠后、也最“体力活”的一段。真正让IC逆向这件事在学术界和工业界都持续有热度的是它前面那一长串自动化、智能化、跨层次的推理过程——从物理版图到网表从网表到寄存器传输级从RTL到行为级语义每一步都在做“从低抽象层级往高抽象层级猜”的事情。TCHES上这类综述的价值不在于教你磨芯片而在于把“逆向”这件事拆成可计算、可评估、可复现的子问题。它关心的核心问题是给定一个已经制造出来的集成电路我们能在多大程度上、以多高的自动化程度、在多短的时间内恢复出它的结构信息和功能语义。这个问题的答案直接决定了硬件安全评估能做到什么颗粒度也决定了芯片取证、知识产权保护、供应链可信验证这些场景能不能真正落地。我自己的背景偏FPGA和数字前端早些年做项目时接触过一些网表级的分析工作后来因为做硬件安全相关的评估才系统性地去看IC逆向这条线。说实话刚入门的时候最容易犯的错就是把“逆向”等同于“抄版图”。实际上现代IC逆向的产出物至少有三个层次结构层netlist、模块划分、互连关系、功能层有限状态机、数据通路、控制逻辑、语义层这个模块到底在算什么、协议是什么、密钥怎么走。层次越高自动化难度越大但对安全评估的价值也越大。这篇综述之所以值得细读是因为它把这三个层次的方法论、工具链、评估指标和开放问题都摆到了一起。它不会给你一个“一键逆向”的脚本但会告诉你当前学术界在哪个环节已经能做到80分哪个环节还在30分徘徊以及为什么。对于做FPGA项目实战、做硬件安全、甚至做EDA工具开发的人来说这是一张很有用的地图。2. 逆向链路的分层拆解从版图到语义的四级台阶2.1 第一级物理层图像到几何结构任何逆向工作的起点都是物理信息。对于已经封装的芯片第一步是去封装常用的方法有化学腐蚀、等离子刻蚀、机械研磨等。去封装之后用扫描电子显微镜或光学显微镜对芯片表面进行逐层成像。先进工艺节点下金属层数可以超过15层每层的线宽在纳米量级成像的分辨率和对齐精度直接决定了后续所有步骤的上限。这一阶段的核心任务是把图像里的几何图形提取出来形成版图级的多边形描述。传统方法依赖图像分割和边缘检测但到了FinFET和GAA时代器件结构的三维性让单纯的二维图像分析变得不够用。综述里提到的一个趋势是越来越多的团队在用深度学习做SEM图像的自动分割和关键尺寸提取因为人工标注的成本太高而且不同工艺节点的图像特征差异很大传统阈值方法泛化能力差。注意物理层成像的质量是整条链路的“天花板”。如果这一层信噪比不够后面所有自动化工具都是在噪声上做推理结果不可信。2.2 第二级版图到网表的提取与识别有了版图几何信息之后下一步是提取晶体管级网表。这一步在EDA工具里有成熟的标准流程叫LVSLayout Versus Schematic的逆过程——通常LVS是拿版图和原理图对比而逆向是只有版图要反推出原理图。工具需要识别晶体管、电阻、电容等器件然后根据几何连接关系推导出节点和支路。但这里有个容易被忽略的问题标准单元库的识别。现代数字芯片大量使用标准单元如果能把版图里的标准单元和已知库里的单元对应起来网表的规模会大幅压缩可读性也会提升。综述里专门讨论了标准单元识别的方法包括基于图形匹配的、基于机器学习的、以及基于电路拓扑指纹的。实际项目中我见过最实用的做法是“图形匹配打底、机器学习补漏”——先用已知库做精确匹配匹配不上的再用分类器猜最后人工复核可疑项。2.3 第三级网表到RTL的结构恢复拿到门级网表之后真正的挑战才开始。门级网表是一堆逻辑门和触发器的连接人看是看不懂的。结构恢复的目标是把它变成有层次、有语义的RTL描述比如识别出加法器、乘法器、移位寄存器、有限状态机、存储器接口等。这一步的经典方法是图划分和模式识别。把网表看成一张有向图用图聚类算法把功能相关的节点聚在一起形成候选模块。然后对每个候选模块做模式匹配看它是否符合某种已知的算术或逻辑结构。综述里提到近年来基于图神经网络的方法在这个环节表现突出因为它能同时利用节点的局部特征和图的全局拓扑信息。但我要泼一盆冷水结构恢复的准确率在学术论文里看起来很漂亮实际项目中往往要打折扣。原因很简单论文里的基准电路通常是教学用的简单设计而真实芯片里有大量优化过的、混合了手工定制和自动综合的逻辑边界模糊模式不规整。所以我的经验是结构恢复的结果只能作为“线索”不能作为“结论”必须配合功能验证。2.4 第四级从结构到功能语义的推理这是整条链路里最难、也最吸引人的部分。结构恢复告诉你“这里有一组触发器和组合逻辑”功能语义推理要告诉你“这是一个CRC校验模块”或者“这是一个AES轮函数”。这已经超出了传统逆向的范畴进入了程序理解和知识推理的领域。综述里讨论了几条技术路线一是基于模拟的语义推断给恢复出的模块施加激励观察输出反推功能二是基于形式化方法的属性推断用模型检验或定理证明来验证候选功能三是基于大语言模型LLM的辅助推理把网表或RTL片段转成文本描述让模型去猜功能。第三条路线是最近两年才热起来的热词里“LLM”“LLM wiki知识库”“RAG GraphRAG LLM wiki”这些词频繁出现说明社区对用大模型辅助硬件理解这件事有很高的期待。但LLM在这条链路里的角色需要冷静看待。它擅长的是“给线索”和“做解释”不擅长“做精确验证”。你可以让LLM看一段RTL然后问它“这像什么协议”它可能给出几个候选但最终确认还得靠仿真或形式化。所以我的判断是LLM会成为逆向工程师的“副驾驶”而不是“自动驾驶”。3. 为什么这件事在2026年变得更重要3.1 硬件安全评估的颗粒度需求在提升过去做硬件安全评估很多时候停留在“有没有后门”这个层面。但现在供应链越来越复杂一颗芯片里可能集成了来自多个来源的IP评估的颗粒度必须细化到“这个IP的行为是否符合规格”“有没有未声明的功能”“密钥管理逻辑是否可被旁路”。这些问题的回答都依赖于对芯片内部结构的深入理解也就是逆向能力的支撑。3.2 FPGA逆向与ASIC逆向的差异被重新审视热词里有大量FPGA相关的内容“fpga项目实战”“基于fpga的多端口ddr读写程序”“fpga spi adc”“fpga图像处理”“fpga实现emmc 5.1控制ip核”等等。这说明FPGA社区对逆向和结构理解的需求也在增长。FPGA逆向和ASIC逆向有本质区别FPGA的配置比特流是已知格式的逆向的核心是比特流到网表的映射以及网表到RTL的恢复而ASIC逆向必须从物理版图出发链路更长、噪声更大。综述里对这两条路径都有覆盖但侧重点不同。ASIC部分更关注物理层和网表层的自动化FPGA部分更关注比特流解析和IP识别。对于做FPGA项目的人来说理解ASIC逆向的方法论也有好处因为很多结构恢复和功能推理的算法是通用的。3.3 LLM带来的新可能性与新的不确定性LLM在IC逆向里的应用目前最成熟的场景是“辅助理解”和“知识检索”。比如你恢复出一段网表不确定某个子模块的功能可以把它的结构特征描述出来让LLM在已知的硬件设计模式里做匹配。或者你有一堆逆向报告想让LLM帮你做交叉引用和一致性检查。但LLM的局限性也很明显它对硬件描述语言的理解深度远不如对自然语言的理解对时序、并发、复位语义这些硬件特有的概念容易出错。而且LLM的推理过程不可解释在安全评估这种需要可追溯、可复现的场景里直接采信LLM的结论是有风险的。所以综述里对LLM的态度是“有前景但需谨慎”这个判断我认同。4. 实操视角如果我要复现综述里的某条链路该怎么做4.1 从FPGA入手做逆向练手如果你没有条件做ASIC的物理逆向FPGA是一个很好的练手平台。具体路径是拿一块开发板写一个中等复杂度的设计比如带SPI接口的ADC采集加UART上传综合实现后导出比特流然后尝试从比特流反推网表。Xilinx和Intel的比特流格式有公开文档也有开源工具可以做部分解析。这个过程的难点在于比特流里包含了大量与具体器件架构相关的配置信息不同系列的FPGA差异很大。你需要先理解目标器件的可配置逻辑块结构、互连资源、IO块配置方式才能把比特流里的位模式映射回逻辑功能。综述里提到的很多结构恢复方法在这个场景下可以直接用。实操心得做FPGA逆向练手时先从自己写的设计开始因为你知道正确答案可以验证逆向结果的准确性。等流程跑通了再拿开源IP或自己写的复杂设计做盲测。4.2 网表分析的工具链搭建无论逆向对象是ASIC还是FPGA网表分析都是核心环节。我常用的工具链包括用于图分析的NetworkX或igraph用于逻辑综合和等价性检查的Yosys用于可视化的Graphviz或Gephi。Yosys特别值得推荐它是开源的支持多种网表格式的读写还能做基本的逻辑优化和结构识别。如果你要做更深入的结构恢复可能需要自己写图算法。我的建议是先从简单的模式识别开始比如识别加法器、比较器、多路选择器这些基本结构然后再逐步扩展到状态机和数据通路。不要一上来就想着用GNN先把基础方法跑通理解问题的难点在哪里。4.3 功能语义推理的验证闭环功能语义推理最怕的是“猜对了但不知道为什么对”。所以必须建立验证闭环每提出一个功能假设就要设计一组激励通过仿真或实际测试来验证。如果假设被推翻要记录下反例用来修正推理规则。这个闭环在学术论文里往往被简化但在实际项目中是必不可少的。我见过太多案例逆向报告里写“该模块疑似AES加密”但没有任何验证最后发现只是一个普通的查表逻辑。这种错误在安全评估里是致命的。5. 常见问题与排查技巧实录5.1 网表规模太大图算法跑不动怎么办这是最常见的问题。真实芯片的门级网表动辄百万门直接跑图聚类算法内存和时间都吃不消。我的做法是分层处理先做粗粒度的划分把网表切成若干个子图每个子图规模控制在可处理范围内然后在子图内部做精细分析最后再处理子图之间的接口关系。另一个技巧是利用网表的层次信息。虽然后端综合可能会打平层次但很多设计在网表里仍然保留了部分层次边界。如果能识别出这些边界就可以把问题分解成更小的单元。5.2 标准单元识别率低大量单元无法匹配这通常是因为目标工艺的标准单元库和手头有的库不一致。解决办法有几个一是从版图里提取候选单元的特征晶体管数量、拓扑结构、引脚位置建立自定义库二是用无监督聚类把相似单元聚在一起人工给每个簇打标签三是用迁移学习把已知库上训练好的模型迁移到新工艺上。5.3 LLM给出的功能猜测不可靠LLM在硬件语义推理上的错误率不低尤其是涉及时序和协议细节的时候。我的做法是把LLM的输出当作“候选列表”而不是“最终答案”。然后用仿真或形式化方法逐个验证候选。如果LLM给出的候选都不对就把它的推理过程拆开看找出它在哪个环节理解错了这个错误本身也是有用的信息。5.4 逆向结果的可复现性差这是学术界和工业界都头疼的问题。同一个设计不同人用不同工具跑结果可能不一致。提高可复现性的关键是固定工具版本、记录所有中间产物、把人工干预的步骤也脚本化。我在项目里会要求所有逆向步骤都有对应的脚本和日志哪怕是一个手工调整的参数也要记录在配置文件里。常见问题可能原因排查方向解决建议网表规模过大设计复杂度高、层次被打平检查网表是否保留层次信息分层划分、子图处理标准单元识别率低库不匹配、工艺差异对比单元特征自建库、聚类打标LLM猜测不可靠硬件语义理解不足检查推理链候选列表仿真验证结果不可复现工具版本、人工干预检查日志完整性全流程脚本化6. 我对这条链路未来走向的几个判断第一个判断是物理层成像和版图提取的自动化程度会继续提升但瓶颈会逐渐从“图像处理”转移到“结构理解”。也就是说拿到网表会越来越容易但看懂网表会越来越难。这对逆向工程师的知识结构提出了新要求不仅要懂图像和器件还要懂计算机体系结构、编译原理、甚至程序语言理论。第二个判断是LLM在逆向链路里的角色会从“辅助工具”变成“标准组件”但不会取代传统方法。它会嵌入到各个步骤里比如自动生成网表注释、自动匹配已知IP、自动生成验证激励。但核心的推理和验证逻辑仍然需要形式化方法和仿真来保证。第三个判断是FPGA逆向和ASIC逆向的方法论会加速融合。因为FPGA的规模越来越大很多在ASIC上用的结构恢复和功能推理方法在FPGA上也开始适用。反过来FPGA的可重构性和可观测性也为验证逆向方法提供了很好的实验平台。最后分享一个我在实际项目里踩过的坑不要迷信任何单一工具的输出。我早期做网表分析时完全依赖某个开源工具的结构识别结果结果在一个关键模块上识别错了导致后续的功能推理全盘跑偏。后来我养成了一个习惯任何关键结论都要用至少两种独立方法交叉验证。这个习惯让我在后来的项目里避免了好几次严重误判。