01
课程导论与目标
什么是FPGA网表逆向?为什么需要搭建工具链?课程整体架构与学习路径。
导论基础
02
FPGA基础与网表结构
FPGA内部架构(LUT、FF、BRAM、DSP、IO)、网表文件格式(EDIF/NGD/ASCII)解析。
FPGA网表
03
环境准备与工具链概览
操作系统选择(Linux/Windows)、Python环境搭建、核心依赖库(pyverilog、lxml、networkx)安装。
环境Python
04
网表解析基础
使用Python解析EDIF网表,提取模块、信号、实例化信息。
解析EDIF
05
网表解析进阶
处理层次化网表,递归遍历子模块,建立扁平化信号连接图。
层次化递归
06
逻辑单元识别
从网表中识别LUT(查找表)的配置与连接关系。
LUT识别
07
触发器与寄存器提取
识别FF(触发器)类型(D-FF、T-FF、JK-FF),提取时钟、复位、数据路径。
触发器寄存器
08
BRAM与DSP识别
识别块RAM(BRAM)和DSP48单元,提取配置参数与数据位宽。
BRAMDSP
09
IO与时钟网络分析
识别IOB(输入输出块)、全局时钟网络(BUFG)、PLL/MMCM配置。
IO时钟
10
网表图构建
将网表转换为有向图(DAG),节点为逻辑单元,边为信号连接。
图构建DAG
11
图算法基础
拓扑排序、连通分量分析、关键路径提取在图中的应用。
图算法拓扑
12
逻辑综合与优化
使用Python实现简单的逻辑化简(布尔代数化简、冗余消除)。
综合优化
13
功能提取
从LUT配置中提取布尔函数,还原组合逻辑功能。
功能提取布尔
14
时序路径分析
提取寄存器到寄存器的路径,计算组合逻辑级数与延迟估算。
时序路径
15
等价性检查基础
对比原始RTL与逆向网表的逻辑等价性(使用SAT求解器或BDD)。
等价性SAT
16
网表可视化
使用Graphviz/networkx绘制网表结构图,标注关键路径与模块边界。
可视化Graphviz
17
脚本化与自动化
编写Python脚本实现一键解析、识别、提取、可视化全流程。
脚本自动化
18
Xilinx网表逆向实战
针对Xilinx Vivado生成的EDIF网表,进行完整逆向流程演示。
Xilinx实战
19
Intel (Altera) 网表逆向实战
针对Intel Quartus生成的VO/EDF网表,进行逆向流程演示。
IntelAltera
20
Lattice网表逆向实战
针对Lattice Diamond生成的网表,进行逆向流程演示。
Lattice实战
21
第三方工具集成
集成Yosys、ABC等开源工具进行逻辑综合与优化。
YosysABC
22
网表混淆与反混淆
常见网表混淆技术(重命名、逻辑插入、冗余逻辑)及反混淆策略。
混淆安全
23
网表安全分析
检测硬件木马、后门、冗余逻辑的安全分析方法。
安全木马
24
网表逆向在IP核保护中的应用
如何通过网表逆向验证IP核是否被篡改或盗用。
IP保护验证
25
网表逆向在故障注入分析中的应用
提取关键路径,分析单粒子翻转(SEU)敏感点。
故障注入SEU
26
网表逆向在硬件调试中的应用
从网表定位设计错误,辅助FPGA调试。
调试定位
27
性能优化与大规模网表处理
处理百万门级网表的内存优化、并行处理策略。
性能大规模
28
工具链测试与验证
构建测试用例,验证解析、识别、提取的正确性。
测试验证
29
工具链部署与文档
打包为命令行工具,编写用户手册与API文档。
部署文档
30
课程总结与未来展望
回顾工具链搭建全流程,探讨AI辅助逆向、形式化验证等前沿方向。
总结前沿