CPU设计+制造完整教程(学习版)
重要前置说明:普通人在家无法流片造出商用CPU,流片成本几十万~千万级别,依赖晶圆厂、EUV/DUV光刻机、全套EDA、洁净车间。本教程分两大块:CPU数字前端+后端设计(可在电脑/FPGA上动手实现RISC-V内核) + 晶圆制造/封测工业流程原理;学习路线优先:仿真 → FPGA上跑自己写的CPU → 理解工业流片流程。
一、整体总流程
规格定义 → 架构/微架构设计 → RTL前端(Verilog/SystemVerilog)+验证 → 逻辑综合 → 后端布局布线(P&R) → 物理验证(DRC/LVS) → TapeOut交付GDSII → 晶圆厂前道制造(FEOL晶体管、BEOL金属互连) → 晶圆测试 → 划片 → 封装 → 成品测试
第一部分:CPU设计(IC设计,可动手学习)
阶段1:规格与架构定义(Spec)
- 选定指令集:新手优先 RISC-V RV32I(最小整数指令集),其次RV32IMC;不建议从头自创ISA。
- 确定微架构参数(PPA权衡:性能、功耗、面积)
- 单周期 / 5级流水线(IF/ID/EX/MEM/WB,最经典入门)、超标量乱序(BOOM,难度极高)
- 寄存器堆:32个通用寄存器x0-x31、程序计数器PC
- 缓存:I-Cache、D-Cache(入门版可先不带Cache)
- 总线:AHB/APB,外部外设(UART、GPIO)
- 输出文档:指令编码表、流水线时序图、中断/异常机制、接口时序
模块拆分(最小RISC-V CPU)
- IF 取指:PC、指令ROM/IMEM
- ID 译码:指令译码器、寄存器堆
- EX 执行:ALU、比较器、分支判断
- MEM 访存:数据存储器读写
- WB 写回:结果回写寄存器堆
阶段2:RTL前端设计(写硬件代码)
语言:Verilog / SystemVerilog(工业主流);Chisel(Scala,伯克利Rocket/BOOM)
重点:RTL是寄存器传输描述,不是软件C代码,描述时钟沿寄存器之间的数据流动,必须可综合。
module alu(
input [31:0] a, b,
input [2:0] op,
output reg [31:0] res
);
localparam ADD=3'b000, SUB=3'b001, AND=3'b010, OR=3'b011, XOR=3'b100;
always @(*) begin
case(op)
ADD: res = a + b;
SUB: res = a - b;
AND: res = a & b;
OR: res = a | b;
XOR: res = a ^ b;
default: res = 0;
endcase
end
endmodule
最小ALU示例(Verilog)
module alu(
input [31:0] a, b,
input [2:0] op,
output reg [31:0] res
);
localparam ADD=3'b000, SUB=3'b001, AND=3'b010, OR=3'b011, XOR=3'b100;
always @(*) begin
case(op)
ADD: res = a + b;
SUB: res = a - b;
AND: res = a & b;
OR: res = a | b;
XOR: res = a ^ b;
default: res = 0;
endcase
end
endmodule
配套:Testbench(验证激励),给输入、打印波形、对比预期结果。
✅ 免费仿真工具(入门首选)
- Icarus Verilog + GTKWave:轻量,看波形
- Verilator:转C++仿真,速度快,适合完整CPU
- 商用:Synopsys VCS、Xcelium(企业)
✅ 开源RISC-V内核参考(直接研读)
- PicoRV32(极简RV32IMC,适合FPGA)
- CV32E40P(OpenHW,工业级RV32IMC)
- CVA6(Ariane)、Rocket Chip、BOOM(Linux可跑,复杂度高)
阶段3:功能验证(占整个项目60%-70%工作量)
- 模块级验证:单独验证ALU、译码器、寄存器堆
- 核级验证:跑RISC-V官方测试集riscv-tests(基础指令、边界、中断)
- 随机约束验证(UVM,工业标准,新手后期学)
- 目标:100%指令覆盖、分支覆盖,无功能bug
阶段4:逻辑综合(RTL → 门级网表)
输入:RTL代码 + 工艺库(stdcell库) + SDC时序约束(时钟频率、输入输出延迟)
工具:Yosys(开源) / Synopsys Design Compiler(DC商用)
输出:Gate Netlist(由与或非门、触发器组成的电路)
任务:映射到标准单元、优化面积/时序、解决建立保持时间冲突
阶段5:后端物理设计(布局布线 P&R)
把网表变成版图GDSII(给晶圆厂的图纸)
步骤:
- Floorplan:芯片分区、IO焊盘摆放
- Place:摆放所有标准单元
- CTS:时钟树综合(保证时钟偏斜)
- Route:信号线布线、金属层走线
- 时序分析:STA静态时序分析,收敛时序
- 物理验证:
- DRC:设计规则检查(线宽、间距、密度,符合晶圆厂工艺)
- LVS:版图和网表一致性检查(版图和逻辑不能不一样)
工具:OpenLANE+OpenROAD(开源后端);ICC2、Innovus(商用)
阶段6:TapeOut(签核交付)
DRC/LVS全部清零、时序收敛,打包GDSII、工艺文档、IP授权文件,发给晶圆厂,正式进入制造环节。
学习捷径:先上FPGA验证CPU(Tang Nano、Arty A7),在FPGA里烧写RTL,硬件上跑汇编/C程序,这是绝大多数学习者的终点;真实流片只适合工程团队,成本极高。
第二部分:CPU晶圆制造(Fab厂前道FEOL+BEOL,工业流程)
前置:晶圆制备(沙子→硅片)
- 石英砂(SiO₂)提纯 → 电子级多晶硅(纯度99.999999999%,11个9)
- 直拉法CZ:熔融硅+籽晶,拉出圆柱形单晶硅锭
- 切片、倒角、研磨、CMP化学机械抛光 → 镜面晶圆(8寸/12寸主流)
前道 FEOL:制作晶体管(FinFET/GAA),在硅基底做器件
核心循环:氧化 → 涂光刻胶 → 曝光 → 显影 → 刻蚀 → 离子注入 → 清洗,循环几十上百次
- 氧化:晶圆表面长一层SiO₂绝缘层
- 旋涂光刻胶,软烘;
- 光刻(核心工序):掩模版(Reticle)+DUV/EUV光刻机,将电路图案缩小投影到光刻胶;正胶:曝光区域可被显影液洗掉;
- 显影:洗掉曝光部分,形成图案;
- 刻蚀(干法等离子刻蚀为主):把没有光刻胶保护的薄膜刻掉;
- 离子注入:注入硼(P型)、磷(N型),形成PN结,造出晶体管源漏;退火活化杂质;
- 清洗、CMP抛光平坦化,准备下一层;
现代CPU是3D FinFET/GAA,晶体管是立体结构,不是平面。
后道 BEOL:金属互连(把上亿晶体管连起来)
晶体管做好之后,一层层沉积金属(铜互连)+介质层,做多层导线(7nm工艺可达十几层金属)
- PVD物理气相沉积 / CVD化学气相沉积:镀金属/绝缘薄膜
- 再次光刻、刻蚀,做出通孔和金属连线
- CMP抛光,反复堆叠,完成全局互连网络
晶圆测试(CP测试)
晶圆上所有裸片(Die)探针卡接触焊盘,通电测试,标记坏die,避免后面浪费封装成本。
划片(Dicing)
把整片晶圆沿着划片槽切开,分割成一颗颗独立裸片die。
封装+终测
- 装片:把die粘在基板
- 键合:引线键合Wire Bond / 倒装FCBGA(高端CPU)
- 塑封、切割、植球
- FT成品测试:功能、频率、功耗、温度筛选,分级(不同体质CPU分不同型号)
- 打标出货
三、零基础学习路线(按顺序)
- 数字电路基础:逻辑门、触发器、FSM、时序(建立/保持时间)
- 计算机组成原理:单周期CPU、5级流水线、Cache、总线
- Verilog语法 + Icarus+GTKWave仿真,写简单ALU、计数器
- 实现RV32I单周期RISC-V CPU,跑汇编程序
- 移植到FPGA开发板,串口输出、跑简单C程序
- 学习RISC-V工具链:riscv-gnu-toolchain(gcc、binutils、openocd)
- 进阶:流水线、分支预测、Cache、AXI总线、UVM验证
- 后端入门:OpenLANE做简单core的布局布线,理解GDSII
- 流片仅适合团队,MPW多项目晶圆(拼单流片,降低成本)
四、配套资料&开源工具清单
- 教材:《数字设计和计算机体系结构》RISC-V版、《CPU设计实战》、《Verilog HDL数字设计》
- 免费EDA:Icarus Verilog、Verilator、Yosys、OpenLANE、OpenROAD
- 测试集:riscv-tests、riscv-formal
- 开发板:Tang Nano、Arty A7、ULX3S
- 工具链:riscv-gnu-toolchain
五、常见误区
- ❌ 写完Verilog=造出CPU ✅ Verilog只是逻辑描述,离硅片还有验证、综合、后端、Fab几十道工序
- ❌ 仿真通过就一定能流片 ✅ 时序、工艺DRC、电压温度、良率都会出问题
- ❌ 在家可以用光刻机做CPU ✅ 工业EUV/DUV、百级洁净间、特种气体、离子注入机都是重资产设备
- ❌ RISC-V = 免费CPU ✅ ISA标准开源,但CPU核实现、IP、后端、流片仍然有大量工程成本
如果你想要,我可以给你一份可直接仿真的RV32I单周期CPU完整Verilog工程(含testbench、汇编示例)。