ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

手工定制DFF全流程:从原理图、版图到PEX后仿

手工定制DFF全流程:从原理图、版图到PEX后仿

做数字后端或者模拟混合信号的人大概都有这个体会:DFF(D触发器)是整块芯片里出现次数最多的时序单元,标准单元库里随手一抓就有十几颗,可一旦碰到时钟域特殊、驱动能力吃紧、面积卡死、或者需要在特定工艺角下保证建立保持时间的场景,库里那颗就不够用了。这时候就得自己在 Cadence Virtuoso 里手工搭一颗定制 DFF,从原理图一路推到版图,再跑完 DRC、LVS 和寄生后仿。这篇内容就是把这条链路完整走一遍:讲清楚为什么要定制、拓扑怎么选、管子尺寸怎么推、仿真怎么量、版图怎么画、问题怎么查。适合已经会画基本反相器版图、但还没独立从头做过一颗时序单元的读者,也适合做混合信号、需要自己维护小单元库的朋友当作流程清单来对照。

1. 先想清楚:为什么要在标准单元库之外手工做一颗 DFF

1.1 定制 DFF 的真实触发场景

很多人第一反应是"库里不是有吗,为什么要自己画"。这个问题必须先回答,因为定制一颗 DFF 的代价不低——原理图、前仿、版图、DRC/LVS、PEX、后仿,走完一轮少说两三天,多则一周。如果只是普通的数据打拍,用库单元是绝对正确的选择。真正需要定制的场景,通常集中在这几类。

第一类是时序指标被卡死。标准单元库为了通用性,管子尺寸是折中过的,比如为了兼顾面积,时钟管往往做得偏小。当你的路径上这颗 DFF 处在关键路径末端,CLK-to-Q 延迟需要再压 20 ps,库里那颗就没有余量了,只能自己加宽时钟管、重新平衡内部节点。

第二类是特殊功能需求。比如需要带异步复位且复位端是高有效、需要扫描链插入但库里没有对应的扫描版本、需要输出双沿采样、需要内置时钟门控。这些在标准单元库里不一定凑得齐,定制一颗反而更快。

第三类是面积和形状受限。某些模拟前端旁边要塞一颗 DFF 做采样保持,高度被限制在固定的几微米里,宽度可以放宽,标准单元那种固定宽高比的版图放不进去,必须自己按异形尺寸画。

第四类是学习和验证流程。这个不用避讳,很多团队第一次做定制单元,就是拿 DFF 练手,因为它结构经典、指标明确、验证方法成熟,跑通一遍之后再做更复杂的单元心里有底。

判断标准我一般用一句话概括:当库单元的某个指标距需求不足 30%,或者功能对不上,就值得定制;否则优先复用。因为定制带来的不只是设计成本,还有后续的维护成本——工艺迁移、模型更新、可靠性复查,每一颗自制单元都是长期负债。

1.2 指标拆解:速度、面积、功耗、鲁棒性怎么排队

动手之前必须先给指标排优先级,否则后面所有尺寸选择都是拍脑袋。DFF 的核心指标大概有这么几项:

指标物理含义常见测量方式典型权衡
建立时间 t_setup时钟有效沿前数据需稳定的最短时间扫描数据相对时钟的偏移,找输出正确的临界点收窄内部锁存窗口可减小,但会增加延迟
保持时间 t_hold时钟有效沿后数据需维持的最短时间同上,反方向扫描与时钟管尺寸强相关,过小会为负值
CLK-to-Q 延迟 t_cq时钟沿到输出翻转的传播延迟50% VDD 交叉点测量加宽输出级可减小,但面积功耗上升
平均功耗单位时间电荷消耗电源电流积分与翻转率、节点电容正相关
面积版图占位宽×高与管子宽度、finger 数直接相关
噪声容限抗干扰能力直流扫描或噪声仿真与内部节点电容、驱动比相关

这里有个容易被忽略的点:建立时间和保持时间是一对跷跷板。你把第一级传输门的时钟管加大,内部节点充电更快,建立时间会变好,但时钟沿后的电荷注入变强,保持时间可能变差甚至变成负值。负的保持时间在工程上是好事——意味着数据可以在时钟沿之后再来一点点仍然正确,但前提是你的时钟树偏斜能兜住,一旦 clock skew 是反向的,负保持时间就成了隐患。所以这两个指标必须成对看,不能单独优化一个。

我的习惯是先在纸上写一行目标:在标称工艺角、标称电压、25 摄氏度下,t_cq ≤ X ps,t_setup ≤ Y ps,t_hold ≥ 0,面积不超过 W×H。有了这行字,后面每一步选择都能回头对照。

1.3 全流程路线图与各阶段交付物

整条链路拆开是六个阶段,每个阶段都有明确的交付物,缺一个后面就会返工:

  1. 拓扑选型与手工计算:确定电路结构,估算管子宽长比,产出尺寸初值表。
  2. 原理图搭建:在 Virtuoso 里画电路、建 symbol、配 CDF 参数,产出一个可被上层调用的单元。
  3. 前仿验证:搭 testbench,测建立保持、延迟、功耗,扫 PVT 角,产出仿真报告。
  4. 版图绘制:布局规划、器件摆放、走线、加保护环,产出通过 DRC/LVS 的版图。
  5. 寄生提取:跑 PEX,产出带寄生的网表。
  6. 后仿闭环:用寄生网表重跑关键仿真,对比前仿差异,必要时回改尺寸或走线。

这六步是串行的,但实际做的时候第 4 步和第 3 步会来回跳——版图画完发现后仿保持时间崩了,得回原理图改管子,改完版图重画。所以真正的时间分配大概是:原理图和前仿占 40%,版图占 40%,后仿和迭代占 20%。第一次做的人往往低估版图那 40%,画到一半发现器件对不齐、走线绕不开,推倒重来的情况很常见。

2. 拓扑选型:主从传输门、C2MOS 还是 TSPC

2.1 四种主流 DFF 结构的适用边界

DFF 的电路结构翻来覆去就那么几种,选错了后面怎么调都别扭。我把常用的四类列出来对比。

**主从传输门型(TGDFF)**是最经典的结构:两级锁存器串联,第一级在主时钟为低时透明,第二级在主时钟为高时透明,中间用传输门做开关。优点是建立保持时间好控制、输出驱动能力强、对时钟沿不敏感;缺点是管子数量多(通常 20 到 24 颗),时钟负载重,面积大。它适合做通用单元,也是标准单元库里最常见的实现。

C2MOS 型用时钟管堆叠代替传输门,时钟管接在电源和地之间做"钟控反相器"。优点是管子少、时钟负载轻;缺点是内部节点存在浮空状态,时钟沿附近容易出现电荷共享,保持时间不好压,对时钟斜率敏感。它适合时钟资源紧张、面积敏感的场景。

TSPC(真单相时钟)型只用单相时钟,靠预充和求值完成锁存,管子数最少(通常 9 到 11 颗)。优点是速度快、时钟负载极小,高速电路里很常见;缺点是没有静态保持能力,时钟停振时数据会丢,而且对时钟斜率极其敏感,斜率一慢就出错。它只适合时钟永远在跑的高速通路。

脉冲锁存器型用一个窄脉冲代替边沿触发,本质是锁存器加脉冲发生器。优点是延迟极低;缺点是脉冲宽度必须精确控制,工艺角一变脉冲就可能过宽或过窄,可靠性风险高。

我的选择逻辑是:通用场合选主从传输门,高速且时钟常开的场合选 TSPC,面积卡死且能接受浮空节点选 C2MOS,脉冲型只在特殊高速接口里用。第一次做定制建议从主从传输门入手,因为它的行为最"教科书",仿真结果容易和理论对上,出问题也好定位。

2.2 管子尺寸怎么定:从驱动能力和电荷共享算起

尺寸设计是整件事里最像"手艺"的部分。没有唯一解,但有明确的推导路径。我一般分四步走。

第一步,定输出级的驱动比。输出反相器的 PMOS/NMOS 宽度比按迁移率比取,成熟工艺里空穴迁移率大概是电子的三分之一到二分之一,所以 PMOS 宽度取 NMOS 的 2 到 2.5 倍。设 NMOS 宽 1 单位,PMOS 宽 2.5 单位,这个比例保证上升下降时间大致对称。输出级的总宽度决定了 t_cq 的下限,如果目标是驱动 10 fF 负载、t_cq 控制在 50 ps 以内,按经验公式粗略估:延迟约等于 0.7 乘以负载电容再除以等效跨导,反推出来的宽度大概是单位尺寸的 6 到 8 倍。这个数值只是起点,实际要在仿真里调。

第二步,定传输门尺寸。传输门是 NMOS 和 PMOS 并联,导通电阻约等于两者并联。为了让内部节点在半个周期内充到 99% 的目标电平,需要满足 RC 时间常数小于半个周期除以 4.6。假设时钟周期 1 ns,半周期 500 ps,允许的时间常数约 108 ps。传输门导通电阻按工艺给的单位电阻乘以长度除以宽度估算,反推出宽度。这一步算出来的值通常偏保守,实际可以在仿真里往下砍。

第三步,定时钟管尺寸。时钟管直接挂在时钟网上,宽度越大时钟负载越重,但太小又会导致内部节点充电不足。经验值是时钟管宽度取传输门宽度的 0.8 到 1.2 倍。这里有个坑:时钟管做得太大,时钟沿的电荷注入会通过栅漏电容耦合到内部节点,让保持时间恶化;做得太小,建立时间又不够。这个平衡点只能靠扫描仿真找。

第四步,留冗余。手工算出来的尺寸,仿真跑完通常会有一两项不达标。我的习惯是在初值基础上,把关键路径上的管子宽度多留 20%,后面再往下收。宁可一开始大一点,也不要一开始太小——小了要改版图重画,大了只是多耗点面积。

2.3 原理图搭建实操:符号、引脚、CDF 与模型挂载

Virtuoso 里搭原理图本身不难,难的是让它变成一个"能用的单元",而不是一张图。几个关键动作必须做对。

引脚顺序要固定。D、CLK、Q 三个信号,加上 VDD、VSS,加上可能的 RN(复位)。引脚命名和顺序一旦定了就不要改,因为后面 testbench 和上层调用的网表都依赖它。我习惯的顺序是电源地在前、时钟次之、数据最后,这样在版图上电源轨位置天然对齐。

必须建 symbol。不要直接调 schematic 做仿真,建一个带引脚形状的 symbol,版图做完之后做 LVS 也靠它对齐。symbol 的引脚位置尽量和版图引脚位置对应,后面做 PEX 后仿替换视图时不会出错。

CDF 参数配置。如果这颗 DFF 要被上层反复调用,建议给 symbol 加 CDF 参数,比如驱动强度、复位极性。参数通过 CDF 传给子电路,避免每次复制一份原理图。这一步很多新手会跳过,结果上层用到第三颗的时候发现要改尺寸,只能手动改三份,改漏一份就出错。

模型挂载要确认工艺库路径。Virtuoso 里通过 Model Library 指向工艺模型文件,仿真前务必在 ADE 的 Setup 里检查 model file 是否加载成功。常见错误是模型没加载,仿真跑完波形是平的,排查半天以为是电路问题,其实是模型路径写错了。

3. 前仿验证:把建立保持时间真正量出来

3.1 Testbench 搭建的四个关键点

前仿的 testbench 看起来简单,但细节决定结果可信度。我把关键点归成四条。

第一,时钟要带真实斜率。很多人图省事用理想方波,上升时间设成 0。这在仿真里是"作弊",实际时钟网有电阻电容,斜率总归是有限值,通常几十到上百皮秒。理想时钟会让 TSPC 和 C2MOS 这类对斜率敏感的结构表现出虚假的好结果。我的做法是给时钟源串一个反相器链,或者直接在脉冲源上设上升下降时间,取值参考时钟树末端的实际斜率。

第二,输入数据也要带斜率。数据信号从上一级来,同样有转换时间。设成 20 到 50 ps 比较接近真实。

第三,输出必须挂真实负载。不挂负载测出来的 t_cq 是"空载延迟",比实际乐观 30% 以上。负载大小按这颗 DFF 要驱动的下一级输入电容估,比如驱动四颗同类型单元,负载就是 4 倍输入电容,用理想电容或反相器链模拟都行。

第四,电源要串一个小电阻。直接在 VDD 上加理想电压源,测不出动态压降。串一个几十毫欧的电阻或者一小段理想电感,能观察到开关瞬间的电源塌陷,这对判断电荷共享和噪声有帮助。

3.2 建立时间和保持时间的扫描测法

这两个指标是 DFF 的灵魂,测法必须规范。主流做法是偏移扫描法,逻辑如下。

固定时钟周期,让数据 D 相对时钟 CLK 的有效沿做时间偏移。偏移量从"数据远早于时钟"开始,逐步逼近时钟沿。每改一次偏移,跑一次瞬态仿真,检查输出 Q 是否正确翻转。找到最后一个"仍然正确"的偏移点,这个点就是建立时间的临界值;继续往前推,找到第一个"开始错误"的点,两者之间就是建立窗口。

保持时间同理,让数据在时钟沿之后延后变化,从"远晚于时钟"逐步提前,找到最后一个仍然正确的点。

实际操作中有几个细节:扫描步长不能太大。第一次粗扫可以用 20 ps 步长,定位到大概区间之后,再用 2 ps 步长细扫。步长大于实际窗口,会得到偏乐观的结果。判据要自动化。手动看波形太慢,可以在 testbench 里加一个比较器,把 Q 和一个参考 DFF 的输出比对,不一致就输出错误标志。或者用 Ocean 脚本批量跑、批量判。

还有一个更省事的办法:部分版本的 Virtuoso 带 setup/hold 特性化工具,可以直接在 ADE 里配置扫描范围和步长,自动出报表。但工具给的结果我一般会挑两三个点手工复算一遍,确认判据没配错。

3.3 功耗与延迟的测量口径

延迟测的是 CLK 有效沿到 Q 翻转的 50% VDD 交叉点时间差。注意要测上升沿和下降沿两种情况,取较大值作为指标。有些人只测一个方向,结果另一方向的延迟超标,后仿才发现。

功耗分静态和动态。静态功耗测时钟停振、数据不变时的电源电流;动态功耗测固定翻转率下的平均电流。测法是在电源支路里串一个 0 欧姆电阻(或者用电压源的电流探针),对电流波形做时间积分再除以时间窗口。窗口要避开启动瞬态,一般取第 5 个周期到第 20 个周期。

这里有个容易出错的点:翻转率要写清楚。说"功耗 30 微瓦"没有意义,必须说明是数据每周期翻转一次还是每两周期一次、时钟频率多少。我习惯在报告里统一用"时钟 1 GHz、数据每周期翻转"这个口径,方便横向对比。

3.4 PVT 角与蒙特卡洛:别只看标称值

标称角跑通只是及格线。DFF 这种时序单元,真正决定成败的是慢角和快角。

PVT 角至少覆盖:慢工艺慢电压高温(SS/低压实测最差建立时间)、快工艺快电压低温(FF/高压测最差保持时间)、以及标称角。慢角下管子驱动弱,建立时间变长;快角下管子驱动强,时钟沿电荷注入猛,保持时间可能变成负值。两端都要看。

蒙特卡洛用来评估工艺涨落。跑 200 到 500 次,看建立保持时间的分布,重点关注 3σ 边界。如果 3σ 已经踩线,说明设计余量不足,得回原理图调尺寸。跑蒙特卡洛比较耗时,建议在尺寸基本定型后再跑,不要一开始就上。

4. 版图实战:从布局规划到 DRC/LVS 干净

4.1 版图规划的先后顺序

版图画得好不好,一半取决于动手前的规划。我的顺序是:定外形尺寸、摆电源轨、放输入输出引脚、再往里填器件。

先定高度。如果这颗 DFF 要和标准单元混排,高度必须对齐标准单元的 track 数,比如 9 track 或 12 track,对应固定高度。高度定了,电源轨的位置就定了,通常 VDD 在最上面、VSS 在最下面,各占一条金属。

再定引脚位置。D、CLK 在左侧,Q 在右侧,符合信号从左到右流动的习惯。引脚位置要和 symbol 对应,LVS 才不会报错。

然后放器件。主从结构天然分成两级,第一级锁存器放左边,第二级放右边,中间留出走线通道。时钟管集中放在中间区域,方便时钟线一根到底。

最后走走线。内部节点走线尽量短、尽量用低层金属,时钟线用高层金属减小电阻。

4.2 匹配、共质心与 dummy:哪些器件需要认真对待

DFF 里大部分管子不需要严格匹配,但有两处值得认真对待。

第一处是传输门的 NMOS 和 PMOS。它们并联导通,如果两边的导通能力差太多,内部节点充电会不对称,上升和下降的建立时间不一致。做法是把两个管子并排摆,栅极对齐,源漏共用,让它们的沟道方向和周围环境尽量一致。

第二处是输出反相器对。如果这颗 DFF 要驱动较大负载,输出级的 PMOS 和 NMOS 往往要做成多 finger 结构。多 finger 时要注意 finger 之间的间距一致,两端加 dummy 栅,避免边缘 finger 的刻蚀环境不同导致宽度偏差。

共质心在 DFF 里用得不多,因为 DFF 不是模拟电路,对失调不敏感。但如果这颗 DFF 用在采样保持前端,输入对管就值得做共质心加交叉排布。判断标准是:这个失配会不会直接转化成指标恶化。会,就认真做;不会,就别浪费时间。

4.3 时钟网络与内部节点走线

时钟线是版图里最需要小心的网络。它翻转频率最高、负载最重、耦合最敏感。

宽度要够。时钟线用高层金属,宽度按电流密度算。假设时钟频率 1 GHz、时钟管总宽度对应几十微安的平均电流,按工艺给的电迁移限值反推最小宽度,通常比信号线宽 2 到 3 倍。宽度不够会导致时钟线上有可观压降,末端时钟幅度不足,直接诱发建立保持失效。

要加屏蔽。时钟线两侧尽量走地线或者电源线做屏蔽,减小对相邻信号线的耦合。如果实在绕不开,至少保证时钟线和敏感内部节点之间隔开一定间距,或者走不同层。

内部节点走线要短。主从结构中间那两个节点(第一级输出、第二级输入)电容很关键,走线越长电容越大,建立时间越差。做法是把两级锁存器摆得尽量近,中间节点用最短路径直连,不要为了整齐绕大弯。

4.4 天线效应、Latch-up 与保护环

这三项是版图的"合规项",不做 DRC 会报错,做了又占面积,得权衡。

天线效应指长金属线在等离子刻蚀过程中积累电荷,击穿栅氧。判断依据是金属面积与栅面积的比值超过工艺限定值。解决办法有两种:一是把长线在中间跳到更高层金属再跳回来(电荷不能累积到同一段);二是在栅极附近加天线二极管。DFF 里最容易出问题的是时钟线,因为它又长又宽。我的做法是时钟线优先走高层金属,并且在进入每个时钟管之前做一次跳层。

Latch-up是 CMOS 结构里寄生的可控硅被触发导致电源短路。防护靠保护环:NMOS 外面围 p 型保护环接 VSS,PMOS 外面围 n 型保护环接 VDD。DFF 面积小,保护环占比不小,但不能省。另外要保证衬底和阱的接触孔密度足够,一般每隔几个管子就打一组接触。

保护环的画法:紧贴器件有源区外围画一圈,宽度按工艺最小规则,接触孔均匀排布。输入输出引脚附近也要加,防止外部静电注入。

4.5 DRC/LVS 调试实录

版图画完,跑 DRC 和 LVS,大概率不会一次干净。我遇到的高频问题大概这几类。

DRC 报金属密度不足。小面积单元常见,金属填充率不够。解决办法是在空白区域加金属填充块,注意填充块要接电源或地,不能浮空,否则 LVS 会报未连接节点。

DRC 报 via 包围不足。金属包孔的最小包围不够。手工画孔时容易漏,用阵列孔加自动包围能避免。

LVS 报器件数量不匹配。常见原因是多 finger 管被识别成了多个独立器件,或者 dummy 管没有正确标记为不参与网表。解决办法是在 dummy 管的栅上打上识别层,告诉工具忽略。

LVS 报节点未连接。多半是走线看起来连上了,实际有一层没打通,或者接触孔画在了有源区外面。用高亮网络的方式逐段检查最快。

LVS 报电源地短路。保护环和电源轨搭上了,或者阱接触接到了错误的网络。这个必须改,不能靠忽略规则绕过。

调试顺序建议先跑 DRC 再跑 LVS,因为 DRC 的几何错误往往会导致 LVS 误判,先把几何修干净,LVS 的问题会少一半。

5. 寄生提取与后仿闭环

5.1 PEX 设置:抽哪些、抽多细

版图过了 DRC/LVS,下一步是提取寄生。Virtuoso 里一般用 Quantus 或者 Assura 做 RC 提取。设置上有几个关键选择。

提取模式选 RC 还是 C only。DFF 内部节点走线短,电阻影响不大,C only 通常够用,跑得也快。但如果时钟线很长,建议选 RC,因为时钟线的电阻会造成实际到达各时钟管的沿时间不同,这个差异会影响保持时间。

提取 corner至少跑典型和 worst case 两组。worst case 一般指电容最大、电阻最大的组合,对应建立时间最差;有的工艺库还提供电容最小的 corner,对应保持时间最差,也要跑。

耦合电容处理选是否带耦合。带耦合的网表更准,但仿真慢很多。DFF 内部节点少,建议带耦合跑一次,确认没有明显的耦合恶化,之后迭代可以用简化模式加速。

5.2 后仿结果对比与迭代

后仿跑完,第一件事是和前仿做逐项对比,看差多少。

经验数据:t_cq 后仿通常比前仿差 10% 到 25%,因为多了走线电容和驱动电阻。建立时间差 5% 到 15%。保持时间变化方向不定,可能变好也可能变差,取决于耦合和时钟到达顺序。功耗增加 15% 到 30%,主要是时钟网络充放电。

如果某项恶化超出预期,按这个顺序排查:先看时钟线电阻是不是太大,导致末端时钟沿变慢;再看内部节点电容是不是超标,走线绕远了;最后看耦合,是否有相邻信号线在敏感时刻翻转。

5.3 三种常见修正手段

加缓冲。如果 t_cq 差一点,在输出级后面加一级反相器,驱动能力立刻上来。代价是延迟增加一级门延迟,面积增加。适合差得不多的情况。

改尺寸。如果建立时间不够,加宽传输门和时钟管;如果保持时间不够,减小时钟管宽度或者加长内部节点。改尺寸要重画版图,成本最高,但效果最直接。

改走线。如果后仿比前仿差太多,问题在版图而不是电路。重新规划布局,缩短关键节点走线,给时钟线加宽,往往能挽回大半损失。这是性价比最高的手段,优先尝试。

6. 常见问题速查与踩坑记录

6.1 仿真类问题速查

现象可能原因排查动作
波形全平,输出不翻转模型文件没加载或引脚接反检查 ADE 的 model 路径、核对 symbol 引脚
建立时间测出来异常小时钟用了理想方波给时钟加真实上升时间
保持时间为负且很大时钟管过大导致电荷注入减小时钟管宽度重跑
功耗明显偏高翻转率设置错误或负载过大核对激励频率和负载电容
蒙特卡洛全部失败参数分布设置错误检查统计模型和采样数

6.2 版图类问题速查

现象可能原因排查动作
DRC 报密度金属填充不足加接电源地的填充块
LVS 器件数不符多 finger 被拆成多个器件检查 finger 连接和识别层
LVS 报未连接接触孔位置偏或层未打通高亮网络逐段查
后仿保持时间崩时钟线耦合或长度差异大加宽时钟线、调走线顺序
版图放不进目标高度器件总宽超标增加 finger 数、压缩间距

6.3 三条最值得记住的经验

第一条,先保证功能正确再优化指标。很多人一上来就调尺寸追求低延迟,结果功能都不对,白忙。正确顺序是:功能对、时序对、指标优。

第二条,前仿和后仿的差距永远比你预期的大。我一般会在前仿阶段就把指标做到比目标好 20%,给后仿留余量。卡着目标值做前仿,后仿必崩。

第三条,版图不是画完就完事,要能读懂自己的版图。后仿出问题的时候,你得能指着版图说出"这条线是哪根、这个节点在哪",否则排查全靠猜。画的时候就有意识地给关键网络打标记、记录走线路径,后面省一半时间。

7. 最后聊几句实际体会

这套流程我自己走过好几遍,最大的感受是:DFF 小,但它把定制设计的每一个环节都浓缩了一遍。原理图阶段要权衡拓扑和尺寸,仿真阶段要设计测量方法,版图阶段要考虑匹配和保护,后仿阶段要面对理想与现实的差距。把这颗单元从头做完,再看其他更复杂的定制单元,路径是通的,只是规模变大。

有一个细节我踩过坑:第一次做的时候,我按照教科书算了一套尺寸,前仿完美,兴冲冲画完版图,后仿一跑保持时间直接负了 40 ps。查了两天才发现是时钟线走得太长,末端时钟沿比源头慢了近 80 ps,导致第二级锁存器提前关闭。后来把时钟管集中摆放、时钟线改用高层金属加宽,问题消失。这件事让我养成了一个习惯:画版图之前先在纸上画一遍信号流向和时钟路径,标出哪根线最长、哪个节点电容最大,心里有数之后再动手。

另一个体会是关于验证的严谨度。前仿的 testbench 如果只跑标称角,很多问题会被掩盖。我现在固定跑五个角:标称、慢慢、快快、慢快、快慢,每次改完版图重跑一遍,虽然费时间,但能提前发现大部分 corner 问题。宁可仿真多跑两小时,也不要流片回来才发现某个角下功能失效。

这颗 DFF 做完之后还可以往几个方向扩展:加时钟门控做成低功耗版本、加扫描链做成可测版本、把输出级做成可配置驱动强度。每加一个功能,版图和仿真都要重走一遍,但前面这套流程可以原样复用,改的只是局部。真要做成一份自己的小单元库,建议从 DFF、反相器、缓冲器、与或非这几颗起步,把流程模板固化成脚本,后面加新单元的效率会高很多。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进