前言
上一篇写的是整体布局,更多是在看引线位置、模块关系和信号路径这些大方向。如果说整体布局是在定骨架,那模块布局更像是在往里面填内容。这一步开始以后,很多更具体的问题就会慢慢出现:器件怎么分组、通道怎么留、供电从哪里走、面积怎么收、匹配需求怎么兼顾。模块布局看起来比整体布局更细,但也不是一上来就去挪某一个器件。更自然的做法,还是先把模块内部的结构关系想清楚,再一点点往下收。
一、模块内部也要有层级感
模块布局虽然已经进入局部了,但它本身还是有层级的。顶层调用底层模块,底层模块内部又是由一组组实现同一功能的器件组成。也就是说,模块内部不应该是一堆器件平铺开来,而是尽量保留一点结构感。这一步如果一开始就只盯着单个器件,很容易越摆越碎。但如果先按功能把器件分组,再去考虑每一组之间的关系,后面的供电、布线和匹配都会自然一些。所以模块布局的第一步,通常不是“哪个器件先放哪里”,而是先看:- 哪些器件后面大概率会一起走线、一起供电、一起参与匹配
如果按一个差分放大单元来讲,更稳的逻辑通常是:
- 先确定核心放大器件怎么摆比如差分输入对,这部分通常最敏感,优先考虑匹配、对称、周围环境一致性。
- 再确定和主信号通路直接相关的器件比如有源负载、镜像负载、共源共栅相关器件,看怎么摆更有利于主路径更短、更顺。
- 再看提供偏置的器件比如尾电流源、电流镜支路,看放在哪里既方便连接,又不破坏主结构。
- 最后再收外围偏置和其他辅助器件让整个模块的供电、布线、输出引出一起顺下来
二、能标准化的地方,尽量先标准化
模块内部如果有很多重复使用、尺寸又比较接近的单元,其实可以借一点数字版图里的思路:这不是说模拟版图要完全照数字标准单元那套来做,而是说,对于那些结构重复、尺寸相近、功能相似的部分,提前做一点统一,会少很多无谓的混乱。
三、固定高度、宽度可变,是一个很实用的思路
在模块标准化这件事上,一个很常见也很实用的做法就是:因为如果同类单元的高度、电源轨位置、通道预留都完全不一致,即使输入输出勉强能对齐,后面整体看起来也会比较乱,供电和走线都会受影响。
四、模块高度怎么定,可以先从通道数去想
一个比较实用的思路,是先从走线通道数量去反推单元高度。因为模块内部很多时候不是器件本体摆不下,而是后面线没有地方走。简单来说,就是先按比较常见的走线需求,给器件上下、前后预留出基本通道,再去定整体高度。这样做不是为了追求某个固定数字,而是为了先给后面留出余量。这个思路比较实用,因为它把“高度怎么定”这个问题,从拍脑袋变成了和后面通道规划绑定在一起。
五、不要一上来就把所有线都压到最小
假设现在有人希望做出一些改动,在仅有的三条金属线中间增加两条信号线,任何一个看到这个版图的人都知道显然这两条信号线是无法通过的。假如此时整体模块的版图也已经完成,那将是一个更加困难的事情,你可能在想为了满足DRC要求,你不得不重新布局,重新布线?
很庆幸,这里的三条信号走线我并没有采用最小线宽,我已经做好了应对这种紧急情况的打算,避免了重新画图的麻烦,去手册查看正真的最小线宽。
刚开始画的时候,很多人会自然地觉得,线宽和间距既然满足最小规则,那就直接按最小来。这样当然没错,但很多时候并不是最好的选择。因为模块布局不是只服务于“现在这一版刚好能画出来”,还要考虑后面:如果一开始就把所有空间都压得特别死,后面只要稍微有一点变动,整个模块就可能要大动。相反,如果早期在通道和间距上稍微留一点余量,很多小改动其实都能在原结构里消化掉。看上去紧凑当然很好,但能不能留出一点后续调整空间,有时候也很重要,当然如果电路有做一版就成不用更改的自信可以按最小规则去画😎。
六、器件摆布先从“同类、同功能、可共用”开始
模块内部真正开始摆器件时,比较自然的顺序通常是下面这样。比如 PMOS 和 PMOS、NMOS 和 NMOS,或者同一个功能块里一起工作的器件,尽量先集中摆放。比如一排 PMOS 如果本来就会放在一起,那尽量共用一个更连续的 N 阱,通常会比每个器件各占一块更省面积,也更有利于后续电源轨线的连续性。很多时候浪费的不是器件本身面积,而是器件之间因为阱间距和边界处理多出来的那些空白。如果两个器件之间本来就是同一个节点,后面无论如何都要连起来,那直接在布局阶段考虑源漏共用,往往会比分开摆完再拉线更自然。当然,不是所有情况都适合机械地共用,但只要电路关系允许,这个思路一般都值得先想一下。
七、大尺寸器件,尽量别直接硬摆
模块布局里另一个很常见的问题,就是大尺寸器件怎么处理。有些管子宽度明显更大,如果直接按一个完整大管去摆,版图通常会变得很难看,也不利于后续匹配和布线。更自然的做法,通常还是把大尺寸器件拆成多个 finger,再按等效宽度去组织结构。所以模块布局这一层,很多时候不是在“摆一个大器件”,而是在“摆一组等效的小器件”。
八、别忘了供电和输入输出位置要提前留出来
器件摆得差不多以后,很多人会下意识继续往下收面积。如果一开始只顾着把器件塞紧,后面才发现电源地通道没留出来,那通常会比较麻烦。尤其对于高频或者电流比较大的模块,供电不只是“接上就行”,后面还会牵扯到压降、均匀性、可靠性这些问题。所以模块布局不是器件摆完再想供电,而是摆的时候就要顺手把供电位置考虑进去。模块之间最后怎么接,很大程度上取决于各自输入输出点留得顺不顺。如果模块位置已经大致确定了,那输入输出口也最好尽早按“就近原则”去收一下。这样后面往上层接,或者模块之间互连时,会少很多不必要的绕行。
九、模块布局的目标,不只是把面积压小
但对模拟版图来说,面积当然重要,却通常不是唯一目标。也就是说,模块布局不是单纯地把器件压到最小,而是在面积、供电、走线、匹配、后续调整空间之间找一个更合适的平衡。
结语
先有层级感,再考虑标准化;先定大结构,再收器件摆布;能共用的地方尽量共用,大尺寸器件尽量拆 finger,同时别忘了提前给供电和输入输出留位置。