改版与勘误:为什么芯片有 E0/E1 stepping、errata 是什么
更新时间:2026-09-05。本文是「集成电路大类 · 芯片设计」入门层(beginner)第三十八篇新正文。芯片回来怎么量 说回片 bring-up 可能发现问题。但芯片流片后不能改,发现 bug 怎么办?现实里有两条路:小问题记成 errata(勘误) 让软件绕开,严重或累积多了才改版 respin(版本号 A0→E0→E1 就是这么来的)。这一篇讲清这套机制。
本文要回答的问题
- errata(勘误)是什么?和软件 bug 列表有什么像?
- 芯片上印的 A0、E0、E1(stepping)代表什么?
- 为什么发现了 bug 也不马上重新流片?
- 「金属层改版」为什么比「全层改版」便宜?
一、errata:芯片的「已知 bug 清单」
再充分的验证也难保证第一版硅片零缺陷。回片后在 bring-up/characterization 中发现的、确认属于设计本身的行为偏差,就记成一条 errata(勘误):什么条件下触发、会导致什么现象、影响多大。
很多 errata 不必重新流片,而是给软件/固件 workaround(规避方案):比如「在某寄存器写 1 之后必须紧跟着读一次」「别用某种组合模式」。驱动/BIOS 在初始化时按 errata 清单做特殊处理就能绕开。这和软件的「已知 issue + 规避方法」是一个思路,只是芯片的 workaround 往往要永久背着。errata 会写进芯片手册,车规/工业客户尤其关心(见 车规与工业级)。
二、stepping:芯片的版本号
每次改版流片,芯片就有一个新版本,叫 stepping / revision,常标成 A0、A1、B0…E0、E1:
- 字母(或大版本)通常表示大改版(base layer 变了);
- 数字小版本常表示金属层改版;
- 你在 CPU 上听说的「stepping」、芯片手册里的「revision ID」寄存器,都是这个版本号(可通过 JTAG/寄存器 读出来)。
客户和软件据此判断「这颗硅是第几版、适用哪些 errata 和 workaround」。
三、不是每个 bug 都值得 respin
改版(respin)意味着重新走部分流程、重做光罩,代价是几百万掩膜费 + 几周到几个月(见 光罩为什么贵、成本账)。所以决策是权衡:
- 能用 workaround 绕、影响小 → 记 errata,不 respin,继续卖;
- 严重(功能不可用、安全/可靠性问题)或 workaround 代价太大 → 必须 respin;
- 攒一批改进/缺陷 → 在下一版一起改,摊薄改版成本。
这也是为什么流片前要拼命验证、先做 FPGA 原型——每躲过一个 respin 就省下几百万和几个月。
四、金属层改版 vs 全层改版
改版也分轻重,成本差很多:
- 金属层改版(metal spin / metal change):只改某几层金属连线(底层晶体管不变)。因为光罩是分层的,只需重做上面几层金属掩膜,便宜、快。很多小的连接/配置错误能用金属改版修复;
- 全层改版(full respin / base layer change):晶体管/底层都要动,要重做大部分甚至全部光罩,最贵、最慢,对应大版本(字母)变化。
工程上若能靠「只动金属」解决,会优先选择,这是设计后期常预留一些「金属可配置」资源的原因。
五、这一篇在知识体系里的位置
- 想看 bug 在回片后怎么被发现 → 芯片回来怎么量;
- 想看为什么改版这么贵 → 版图数据与光罩、tape-out、一颗芯片的成本账;
- 想理解为什么要在流片前做足验证和原型 → 验证与测试的区别、FPGA 与 ASIC;
- 想看 errata 在手册里的位置 → 怎么读芯片手册。
总结
一句话总结:芯片流片后发现设计问题时有两条处理路径——轻微或可规避的缺陷记为 errata(勘误),像软件的已知 bug 列表一样记录触发条件、现象和影响,并由软件/固件用 workaround(如某寄存器写后必须跟读、避开某工作模式)在驱动/BIOS 里永久绕开而不必重新流片,errata 会写进手册供车规/工业等客户核对;严重缺陷或 workaround 代价太大、或累积了一批改进时才做改版 respin,每次改版对应一个 stepping 版本号(A0/E0/E1,大改版动字母、小改版动数字,可经寄存器读出);之所以不轻易 respin,是因为重做光罩要花几百万、等几周到几个月,所以能用 workaround 就先背着、把多个问题攒到下一版一起改,这也正是流片前拼命验证、先做 FPGA 原型的根本原因;改版还分便宜的金属层改版(只重做上层金属光罩、底层晶体管不变,常用于修复连接/配置错误)和昂贵的全层改版(底层都动、重做大部分光罩),能靠金属改版解决就不动全层——理解 errata 与 stepping,就理解了为什么硬件世界里「带着已知小缺陷出货、用软件规避、择机改版」是常态。