JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

流片:从干净的版图到 GDSII

你已经做完了布图规划、布局、建好了时钟树、完成了布线,也对时序做了签核。版图终于干净了。现在,整个后端流程一直朝着它前进的那一刻到来了:把这份打磨好的版图变成一个能送进工厂的单一文件。这节收官课带你走完最后的检查清单,讲清楚 GDSII 究竟是什么、“流片”意味着什么、你的设计接下来去往何处,然后把你交接给那条把文件变成硅的制造课程。

终点线

回想一下后端流程做过的所有事。你从一份门级网表和一块空白的硅矩形出发。你做了布图规划来决定大模块和管脚摆在哪里,做了布局把每一个标准单元放进合法的行里,做了时钟树综合把时钟均匀地扇出,又做了布线在真实的金属层上画出实际的连线。然后你做了签核:你跑寄生参数提取静态时序分析,直到每条路径都满足预算,还检查了功耗。整个序列——布局布线加上签核——都在朝着同一份交付物逼近。这节课就是你把它交出去的地方。

“流片”就是这次交接的名字。它是这样一个节点:你不再*改动*设计,而是开始*把它寄出去*——你冻结版图,把它写成一个文件,再把这个文件送到制作光掩模的地方。这个词是个化石:几十年前,最终的设计数据真的是装在一卷磁带上离开大楼的,有人把磁带用胶带封好,带去掩模厂。磁带早已不在了,但这个名字留了下来,那种感觉也留了下来——一旦寄出去,就回不来了。你没法像给软件打补丁那样给硅打补丁。

# Final signoff STA: prove timing on the WORST corner, not a friendly one.
set_analysis_mode -on_chip_variation true       ; # apply OCV derating margins
report_timing -corner slow_ss_125c -delay setup  ; # slowest silicon, hot -> setup
report_timing -corner fast_ff_m40c -delay hold   ; # fastest silicon, cold -> hold
# Tapeout gate: worst slack across ALL corners must be >= 0.
签核是一个跨多个工艺角的承诺。通过/不通过的规则很简单——所有工艺角里最差的那个[[slack|裕量]]必须保持非负——只有到这一步,时序才挣到了它的对勾。

最后的签核清单

在任何人点下“写出 GDSII”之前,设计必须通过一份全队都认可的检查清单。它没听起来那么风光,却几乎比什么都更重要:流片就绪就是*一串绿色的对勾*,只要有一个红的,就能卡住整次发布。三大项是时序、物理正确性和功耗——正是后端流程一路追逐的那三样,如今在最终的、完全布线好的、带有真实寄生参数的版图上,再做最后一次确认。

  1. 时序已签核。 时序签核确认每条路径都有非负的裕量——建立和保持都通过——这是在最终布线后的网表上、跨所有相关的工艺角、并施加了片内偏差余量后得到的结论。没有任何路径失败,任何地方都没有负裕量。
  2. DRC 干净。 设计规则检查确认版图遵守了晶圆厂要求的每一条几何规则——最小线宽、间距、包围、密度。零违例。
  3. LVS 干净。 版图与原理图比对确认你画出的几何形状与你预期的网表一致——同样的器件,同样的连接关系。你画出来的那颗芯片,*就是*你设计的那颗芯片。
  4. 功耗已验证。 供电网络要做IR 压降检查(每个单元都拿到足够的电压)和电迁移检查(没有哪根线通过的电流大到会被磨损耗尽)。电源和地安全地抵达每一处。
  5. ECO 已收尾并重新验证。 任何最后一刻的工程变更指令都已经布线进去,*而且*受影响的检查都重新跑过——因为正是那个用来收住时序的修改,可能会捅出一个 DRC 违例。

留意最后那句话里藏着的陷阱。这些检查并不是各自独立的——它们彼此耦合,修好一个可能就弄坏另一个。为收住一条时序路径而放大一个单元,你可能就违反了某条间距规则;为修这个 DRC 而重新布线,你又改变了寄生参数,于是你的时序必须重新证明一遍。流片的纪律,就是拒绝在一个*已经过期*的结果上签字。每一个绿色对勾都必须是在同一份、最终的数据库上才是绿的——就是你即将寄出去的那一份。

GDSII:你寄出去的那份版图

那些检查全都是针对你工具内部的某个数据库通过的。要把设计寄出去,你得把它压平成一个自包含的文件,用掩模厂能读懂的格式。几十年来,这个格式一直是GDSII——一段二进制流,它把你整颗芯片存成纯粹的几何:一摞层,每一层上是一堆带有精确坐标的多边形。这就是它的全部理念。GDSII 不知道什么是晶体管、什么是时钟。它只知道:*在第 31 层,有一个从这里到那里的矩形;在第 49 层,有这个多边形。* 这是用刻镂空模板的人会用的方式来描述的芯片——一张张片子上的形状——而不是逻辑设计师会用的方式。

把它想象成一摞高高的透明胶片。最底下的几张片子装着微小的晶体管形状;往上爬,你会经过接触层,然后是金属1、金属 2,一直往上到承载电源的厚厚的顶层金属。每一张片子就是一个掩模层,每一张都只是多边形的一个平面集合。把每张片子对准叠在一起,你就得到了完整的物理芯片——每一根线、每一个过孔、每一个单元——全都冻结成了坐标。一个现代设计有数十亿个这样的多边形,这正是为什么 GDSII(以及它更精简的后继者 OASIS)是二进制并紧凑打包的,而不是人能直接读的文本。

# Write the signed-off layout out as the shippable deliverable.
# (Vendor-neutral pseudo-commands; real tools differ in syntax.)
set_db design_freeze true              ; # no more edits past this point
write_gds  top.gds  -layer_map tech.map ; # binary geometry: layers + polygons
write_lef  top.lef                       ; # abstract for any parent using this block
流片这个动作,浓缩成一句话:冻结数据库,然后把最终版图以 GDSII 的形式流式写出。从此以后,作为权威记录的设计是那个文件——而不再是你的工程。

流片与掩模厂

你的 GDSII 文件会送到掩模厂——晶圆厂里把几何变成玻璃的那个部门。对你那摞层中的每一层,他们都会做一块光掩模:一块石英板,上面把这一层的多边形做成了不透明的铬图案,就像一块极其精密的镂空模板。一个现代工艺需要几十块这样的掩模,每层一块(或几块),合在一起就是你这颗芯片的*掩模组*。制作一套掩模组,是你这个文件触发的、最昂贵也最具承诺性的一件事——这正是流片为何让人觉得如此终局的原因。

但晶圆厂并不会原封不动地把你画的多边形印出来。那些特征远比用来印它们的光的波长要小,于是光会发生弯折,印出来的形状就变得圆钝、扭曲。为了补偿这一点,掩模厂会做掩模数据处理:光学邻近校正(OPC)会故意*扭曲*你的多边形——加上一些小衬线和拐折、把边缘轻轻挪一挪——这样在光把它们模糊掉之后,真正落到晶圆上的东西才和你的本意吻合。掩模不是你版图的一张照片;它是一个经过预先扭曲、专为能正确印出而设计的版本。

交接给制造

到这里,后端课程就结束了,接力棒交给了晶圆厂。掩模组做好之后,晶圆厂就开始制造:一片裸硅晶圆送进去,一层一层地,把芯片自下而上地造起来。这个过程的主力是光刻——让光透过你的每一块掩模,把这一层的图案印到一层光敏涂层里,然后在图案指示的地方刻蚀或沉积材料。一层接一层、一块掩模接一块掩模,你那一摞多边形片子,就变成了硅里一摞真实的物理层。

如果你想详细看看接下来发生什么,那是另一个完整的故事——而 JOVANA 正好有一条课程讲它。《芯片是怎样造出来的》这条制造课程,恰好就从你的 GDSII 落地的地方接着讲下去:晶圆是怎么生长出来的、光刻是怎么把你的掩模印上去的、掺杂是怎么造出当初构成你那些标准单元CMOS晶体管的,以及成千上万颗你这颗芯片的副本,是怎么在一片晶圆上并排造出来的。那条课程,是这同一段旅程里属于制造的那一半,而这条课程收的是另一半的尾。

回来的东西:硅片与点亮

流片之后的几周或几个月,一件非凡的东西会送到你的工作台上:*首批硅片*——用你的掩模做出来的、最最初的那批实物芯片。在仿真器和时序报告里待了这么久之后,你终于可以给真家伙上电了。这就是点亮(bring-up):那个细致而有条不紊的过程,用来证明这颗真实的芯片确实在做设计当初承诺的事。你从小处入手——上电会不会短路?时钟会不会翻转?能不能从复位里出来?——再一步步向外,做到完整的功能集。

点亮就是签核拿到成绩单的地方。你一路带着的每一份余量——你在上面收住时序的每一个工艺角、每一道偏差保护带、你预留的每一份IR 压降——都是关于真实硅片会如何表现的一次下注。如果芯片启动了,并且在各个温度和电压下都跑到了目标频率,那这些注就押对了。如果某条路径只在芯片发热时才勉勉强强,或者某个模块在负载下电压塌掉,那就是硅片在告诉你,有些东西你的脚本漏掉了。有时候,修法是一个小小的ECO加上一次便宜的*仅金属层*重新流片;有时候,则是推倒重来。

于是,这个环就闭合了。你开始这条后端课程时,手里是一份干净的网表和一块空荡荡的版图地面;你结束它时,手里握着一颗能工作的、起点是你那份RTL的芯片。中间的每一步——布图规划、布局、时钟树、布线、提取、签核、流片——存在的意义,都是为了把意图安全地从一段描述送进一个你能拿在手里的实物。这就是物理设计与签核这门手艺的全部:确保以硅片形式回来的东西,正是你当初以GDSII形式寄出去的东西。