3、匹配技术(上):共质心布局原理、叉指结构、虚拟器件(dummy)插入

各位好,咱们今天聊聊匹配技术。这玩意儿在数据转换器里有多重要呢?我打个比方——你辛辛苦苦设计了一个16位的DAC,结果版图没画好,实际精度连12位都不到。这种事我在项目里见过不止一次。说白了,匹配就是让版图里的器件“长得一模一样”,但现实中哪有那么完美的事?

3.1 共质心布局原理

先说说共质心。这个名字听起来挺唬人,其实道理很简单——让所有需要匹配的器件,它们的中心点重合在一起。为什么要这么做?因为芯片上的工艺梯度、温度梯度都是连续变化的,如果器件中心重合,它们感受到的“环境”就一样了。

我举个例子。你有一对需要匹配的MOS管M1和M2,如果并排放着,左边那个可能受光刻阴影影响大一点,右边那个小一点。但如果你把它们拆成四份,交叉摆放,让它们的质心重合——嗯,效果就好多了。

共质心布局的核心思想:

  • 将大器件拆分成多个子器件
  • 子器件围绕一个公共中心对称排列
  • 每个器件的质心都落在同一点上

常见的共质心结构有1D和2D两种。1D就是排成一排,比如ABBA或者ABAB。2D就更复杂了,像九宫格那样。我个人习惯用2D结构,因为它在两个方向上都能抑制梯度效应。

这里有个坑——我曾经在项目里用了ABBA的1D结构,结果发现X方向匹配很好,Y方向却出了问题。后来一查,是工艺的垂直梯度比水平梯度大得多。所以啊,选结构之前,最好先了解一下你们工艺的梯度特性。

3.2 叉指结构

叉指结构,说白了就是把器件的手指交叉着放。你想想看,两个MOS管各有两个手指,如果M1的手指是1和3,M2的手指是2和4,这样交叉排列——这就是叉指。

叉指的好处很明显:

  • 减小了器件之间的距离,匹配更好
  • 降低了栅极电阻
  • 节省了面积

但要注意,叉指结构不是万能的。我记得有一次,一个同事把32个手指全叉在一起,结果寄生电容大得离谱,高频性能直接崩了。所以叉指的数量要适中,一般4到8个手指比较合适。

下面是一个典型的叉指布局代码示例:

// 叉指结构示例:M1和M2各4个手指
// 布局顺序:M1 M2 M1 M2 M1 M2 M1 M2
// 或者更优的:M2 M1 M1 M2 M1 M2 M2 M1

// 实际版图中,每个手指的W/L相同
// 手指间距保持一致,通常为最小间距的1.5-2倍

你可能会问,为什么要有两种排列方式?第一种是简单的交替,第二种是中心对称。我个人推荐第二种,因为它更接近共质心。当然,如果手指数量少,第一种也够用。

3.3 虚拟器件(dummy)插入

虚拟器件,简称dummy。这东西不参与电路工作,但必须得放。为什么?因为光刻和刻蚀过程中,边缘的器件和中间的器件受到的工艺影响不一样。

我打个比方——你种一排树,最边上的那棵总是长得歪一点,因为一边有树一边没树。dummy就是种在边上的“假树”,让真正的器件都处在“中间”的环境里。

插入dummy的几条经验:

  • dummy的尺寸要和真实器件完全一致
  • dummy与真实器件的间距要保持一致
  • dummy的栅极要接固定电位(通常是电源或地)
  • dummy的源漏可以浮空或接固定电位

我曾经犯过一个错误——为了省面积,把dummy做得比真实器件小了一点。结果流片回来,边缘的匹配对和中间的差了0.5%。从那以后,我再也不敢在dummy上偷工减料了。

dummy的数量也有讲究。一般来说,每边放1到2个dummy就够了。如果器件很大或者工艺很老,可能需要3个。但放太多也没用,反而浪费面积。

注意: dummy的栅极不能浮空!浮空的栅极会积累电荷,可能改变周围器件的阈值电压。我见过有人因为这个原因导致整个DAC的INL超标。

3.4 三种技术的综合应用

在实际项目中,这三种技术往往是结合使用的。比如一个高精度电流舵DAC,我会这样做:

  1. 先把大电流源拆成多个单位电流源
  2. 用共质心方式排列这些单位电流源
  3. 每个单位电流源内部用叉指结构
  4. 在阵列外围加上dummy

这样三层匹配下来,效果就很好了。当然,代价是面积大了不少。但做高精度数据转换器,面积从来不是第一位的——性能才是。

最后说一句,匹配技术这东西,光看书没用。你得亲手画几个版图,流片回来测一测,才能真正理解。我当年也是踩了不少坑才慢慢摸出门道的。希望今天的分享能帮大家少走一些弯路。