尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Cadence Virtuoso IC版图绘制技巧:从环境配置到电流镜匹配与DRC排查

Cadence Virtuoso IC版图绘制技巧:从环境配置到电流镜匹配与DRC排查 1. 先用一句话分清这是IC版图不是PCB Layout看到cadence layout 版图绘制技巧这个标题我猜不少人是想搜Allegro或者PADS那种PCB画板子结果点进来发现是另一套东西。先说清楚我这篇写的是IC版图也就是用Cadence Virtuoso做晶体管级、标准单元级的物理设计和画PCB的Layout完全是两码事。IC版图画的是什么是把工艺厂给你的PDK里的电阻、电容、MOS管、三极管这些器件按照原理图连接关系在真实的硅片上用一层层掩膜图形表达出来。你画出来的每一层多边形都对应一次光刻和刻蚀工序。所以IC版图不能像PCB那样先画个大概后面对比一下它的每个图形尺寸都要满足工艺设计规则否则流片回来就是报废。这篇内容是我自己从做课程设计到接手真实项目过程中把Virtuoso里使用频率最高、最容易踩坑的操作攒出来的经验。包括环境配置、图层操作、电流镜匹配、网络选择、DRC排查、电源地规划和文件管理。适合刚接触版图的学生、刚入职的模拟IC工程师以及觉得工具会用但画出来总被师傅挑毛病的同事。我尽量把每个操作背后的为什么一起讲清楚不只是给步骤。2. 环境与显示先把Virtuoso调成顺手的样子再动手2.1 工艺库、cds.lib与display.drf的关系很多人装完Cadence软件兴奋得不行打开Virtuoso界面结果新建版图时看到的是白底黑框或者画出来全是单色方块第一反应就是软件坏了。其实不是软件的问题是工艺库没挂载、显示文件没加载。Cadence的库管理底层靠几个文本文件支撑cds.lib定义库名和库路径lib.defs是早期版本用的库描述techfile.tf存放工艺层的物理属性。打开Virtuoso之前你得确保当前工作目录下有正确的cds.lib并且指向了PDK的安装路径。很多PDK安装完会自动生成示例工作目录里面就带好了配置文件你只需要复制一份作为自己的工作目录不要直接在PDK安装目录里乱动。display.drf是很多人忽略的东西它决定了每层图形在屏幕上的颜色、线型和填充方式。PDK一般自带display资源文件安装后需要手动加载。加载方法是在CIW窗口的Display菜单里选择Load Display Resource File找到PDK目录下的display.drf。加载完你会发现整个世界清晰了有源层一片绿、多晶硅一片红、金属1是蓝色看版图再也不用眯着眼睛猜层。2.2 bindkey与菜单养成自己的肌肉记忆Virtuoso的功能菜单很全面但每次画图都去菜单里点效率会低到让你怀疑人生。我建议从一开始就刻意使用快捷键而不是鼠标一路点。不同版本和不同PDK的bindkey默认设置不完全一样但有几组高频命令是相通的画矩形/Path/多边形菜单在Create→Shape下面我习惯把Rectangle绑定到CtrlShiftRPath绑定到CtrlShiftP复制c移动m拉伸s删除d撤销u放缩i放大o缩小f全图适配k打标尺ShiftK清除标尺。重点不是背快捷键而是在连续操作中不要切换鼠标到菜单。比如你要从A点复制一块版图到B点按c点一下源对象再点一下目标位置整个过程鼠标不用离开画布。这种肌肉记忆一旦建立画图速度能翻倍。2.3 格点与角度设置为什么版图走线以水平和45度为主画版图之前先检查Options→Display里的Snap Spacing格点设置。版图所有坐标都应该贴近工艺格点否则你在版图上画了一条线DRC可能不报错但LVS提取时坐标对不上会出现莫名其妙的short或者open。经验做法是让Gird和Layout Grid保持一致一般设成工艺库最小格点的整数倍。关于走线角度很多新手喜欢走任意角度斜线看起来省面积实际是大坑。大部分工艺规则对任意角度图形的检查非常苛刻DRC容易报宽度和间距错误。标准做法是只走水平、垂直和45度方向。Virtuoso里画Path时可以在Options里选择Path Type为Diagonal或Truncate让工具自动吸附到45度方向。走线方向也要留意同层金属的两个直角连续拐弯会形成大块直接相连区域容易产生切角问题所以遇到拐弯尽量用45度斜接。3. 图层与器件绘制从画一个矩形到搭起一个单元3.1 Create Rect、Path、Polygon到底该用哪个这是新手第一个困惑画一条金属连线用Rectangle还是Path画一个有源区用Rectangle还是Polygon我的原则很简单规则的矩形结构比如MOS管的有源区、金属矩形块用Rectangle因为矩形有明确的角坐标后续做DRC、LVS提取时最干净需要跨越弯折的连线用Path指定线宽和拐角方式画完会自动生成带圆角和斜切的线条遇到不规则图形比如需要斜切或异形结构用Polygon但多边形要特别注意顶点不能过密否则数据量大而且规则检查容易出问题。以最常见的CMOS反相器版图为例PMOS和NMOS的有源区就是规规矩矩的矩形栅极多晶硅是横跨两个有源区的Path金属连线是水平和垂直的Path。整个单元搭建下来用到的基本上就是这么几个创建命令。3.2 Copy、Move、Stretch的边界感Virtuoso里三个编辑命令经常被混用但它们的逻辑差异非常关键Move整体搬移对象所有图形相对位置不变Copy保留原对象生成副本Stretch只移动你框选到的部分没框到的地方保持不动。举一个实际场景你画了一条多晶硅栅极发现栅极长度方向也就是决定MOS管沟道长度的方向画长了0.05um要用Stretch框住栅极末端拉回去而不是选中整根栅极用Move否则整根栅极会平移和源漏区位置错开。再说Copy的一个进阶用法画电流镜阵列时不需要一个管子一个管子重新画把Unit管画好用Copy按行列间距生成整个阵列。但这里有个前提——你的Unit管必须坐标干净边缘刚好落在格点上否则复制出来的阵列间距参差不齐后面加dummy和布线都会很痛苦。3.3 用Create Via打孔孔不是越多越好金属层和通孔打交道最多的时刻就是打Via。Virtuoso中Create→Via可以直接在两层金属交叉处打孔也可以指定一组孔矩阵。很多新手以为Via打得越多越保险实际要结合电流方向和EM规则。通孔的本质是在两层金属之间形成低阻连接但每个通孔在工艺上都是一个实实在在的物理结构存在对准容差和接触电阻。过孔阵列太密DRC可能报孔间距不足太稀过流能力不够。我的经验是信号线连接打个单孔或双孔就够了电源线则要看电流大小用1x2、2x3这类阵列并且上下金属线的覆盖范围要超过孔阵列至少半个孔以上保证连接充分。4. 电流镜匹配与对称性模拟版图的灵魂4.1 电流镜匹配到底在匹配什么模拟版图里最常被问到的一个问题就是电流镜匹配。热搜里layout版图电流镜匹配排得很靠前说明这是很多人的痛点。电流镜的基本要求是两条支路的MOS管饱和电流成比例。理想情况下如果两个管子的尺寸一模一样电流就一模一样。但实际硅片上存在工艺梯度、应力梯度、温度梯度同一批加工出来的管子位置不同阈值电压和迁移率就会有细微差异导致电流不匹配。版图画法的任务就是把这些非理想效应平均化、对称化。最核心的三条原则共质心Common Centroid多个管子的图形交错排列使得各自的质心尽量重合。比如两个需要严格匹配的管子可以拆成4个或8个单元A管和B管交叉放置让工艺梯度的影响在两管之间均匀分布对称左右、上下对称摆放保证热梯度和应力梯度的影响一致加Dummy在阵列边缘添加不参与工作的假管让边缘刻蚀环境与中间管子尽量一致。4.2 手动摆放电流镜阵列的实操顺序我画一个1:4电流镜时一般这么做先确定Unit管尺寸也就是最小重复单元。1:4比例可以拆成5个相同尺寸的Unit管其中1个属于基准支路4个并联属于镜像支路在版图里画好一个Unit管包含完整的有源区、栅极、源漏接触孔用Copy按设定好的节距Pitch生成5个Unit管的阵列排成一排或2x21中心结构。如果追求更好的共质心可采用2x3交叉排列中间两个交叉四周放置dummy所有Unit管的栅极用同一层多晶硅或金属连接方向保持一致尽量不要跳到另外一层再绕回来在阵列两端各加一个不接线的dummy管dummy管源漏接地或与外部隔离。匹配布线的细节也要注意两个支路的输入走线尽量等长、同层、对称避免因为金属电阻差异导致栅极电压不一致。输出端走线如果电流很大还要考虑金属电迁移不要把细线拉太长。4.3 用Constraint Group把匹配意图固化到版图里如果只是自己手动排列匹配关系只存在于你的脑子里一旦后续整体调整位置很容易弄乱。Virtuoso XL提供了Constraint Group机制可以把原理图里的匹配约束带到版图环境里。在XL原理图中选中要匹配的器件右键创建Matching组再进入版图环境生成版图时工具会在这些器件之间建立对应的约束。后续摆放时工具会提示你哪些器件属于同一匹配组并且可以在Constraint Manager里检查匹配状态。即使你手动移动其中一个器件其他器件的相对位置也能被约束起来避免不小心打破匹配关系。我建议初学者即使不用自动布局也要把匹配约束建上。因为它等于给你的设计意图留了一份存档以后做设计评审、加dummy、调整布局都有据可依。5. 网络选择、DRC查错与版图复用5.1 怎么选中同一个网络的完整解法这个热搜词表面上简单但其实背后有几种不同场景。场景一你只是想在版图上高亮某个网络看清它的走向。做法是在Virtuoso的Connectivity菜单里选择Highlight Net输入网络名或者直接点版图上属于该网络的任意一段金属整个网络会被高亮。有的版本还支持按ShiftAlt组合键快速点亮连接。场景二你想选中同一个网络的所有图形进行整体移动或复制。在XL模式下右键点击该网络的一块金属菜单里通常有Select Entire Net或者类似的选项选中后该网络所有连通的几何图形都会被选中。如果没有XL连接性信息可以先Highlight Net再根据高亮结果逐块选择。场景三你要检查两个图形是否真的连到同一网络可以用Connectivity下的Check Connectivity或者直接看LVS报告。这里有个小提示如果你在版图里怎么选都只选到一小段金属很可能是该处的路径被分割成了多段独立图形或者原本用Path画的长线被Stretch拉伸时断开了。这种模型下看起来连在一起实际提取时可能不认为是连通网络需要在选整网之前用Merge命令先把断开的重叠图形合并。5.2 DRC错误Markers的读法别被一堆红框吓到第一次跑DRC满屏红框的场面我见过太多。新手的第一反应往往是完了画错了。其实DRC报错是有层次的你要学会区分硬性错误和警告。在Virtuoso中执行Verify→DRC后版图上会弹出Marker每个Marker对应一条设计规则违例。点击Marker弹出的对话框会显示Rule名称和详细描述比如Metal1 minimum width、Poly to contact spacing这类。我的处理顺序是先按规则类型归类把所有同类型错误一次性处理而不是东改一条西改一条优先处理会导致芯片失效的硬错误比如金属短路、栅极悬浮、宽度不足再看间距类错误这类通常可以通过微调移动解决规格书里的Warnings如某些层密度变化、天线效应预警先记录下来最后统一核对。定位错误时键盘上的N和ShiftN可以循环跳转到下一个/上一个Marker不用眼睛一个个找。我习惯在改版之前先把所有Marker截图保存一份改完再重新跑一次DRC对比错误数量变化这样能清晰知道自己的修改是否有效。5.3 版图复用与导出GDS交付前的最后一公里画完版图通过DRC和LVS之后最后要做的就是把版图数据导出成流片用的GDS文件。方法是在CIW窗口或者版图编辑窗口的File→Export→GDS路径下指定输出文件名和Layer Map映射文件。Layer Map的作用是把版图内部的工艺层编号映射成GDS层号PDK一般都会提供直接可用的map文件。导出前要确认三件事顶层Cell是否就是你想包含的完整芯片不是某个内部单元Layer Map文件版本和PDK匹配否则导出后层次错乱是否包含需要标出的Text标签有些工艺要求顶层有标注层。如果同事或代工厂用的是其他工具还涉及GDS或LEF/DEF的格式转换。这个话题展开又是几千字这里只说一句GDS是行业通用格式导出后可以用第三方工具检查和预览别等到流片前才发现图层映射反了。6. 设计规整性电源地、天线效应与Via数量这些硬门槛6.1 电源地规划先算电流再画宽度版图画到一定规模后真正决定成败的往往不是信号线的匹配而是电源地网络。电源线宽度不够金属电迁移会让芯片在高负载下慢慢失效这是需要严肃对待的可靠性问题。关于金属线宽PDK一般会给出EM规则比如每微米宽度能承受多少毫安电流。不同金属层能力不同顶层厚金属通常比底层薄金属强。设计时我的做法是先估算模块的最大峰值电流然后按照电流密度值乘2倍裕量选宽度。比如某块电路峰值电流是20mA金属1的EM能力是1mA/um那么理论宽度20um实际我会留到40um左右。电源网络的结构也建议早规划。模块级用Ring形式环绕一圈电源环内部用横向或纵向的电源条供电关键单元再就近打孔连接。千万不要画完信号线再补电源那样会陷入这里被信号线堵住、那里过不去的被动局面。6.2 天线效应金属长线可能是栅氧的杀手天线效应Plasma Induced Damage是芯片制造过程中的一种隐患金属刻蚀时金属线像天线一样收集等离子体电荷如果这条线直接连到MOS管的栅极积累的电荷可能打穿栅氧化层。版图层面的主要缓解办法是跳线把长金属线分成几段通过通孔跳到另一层金属让天线被断开电荷积累面积被分散。另外也可以在不影响功能的前提下给栅极加保护二极管但需要具体的工艺支持。判断是否要跳线关键是看PDK里的天线比规则也就是金属面积和栅极面积的比例上限。这个值不是拍脑袋能定的必须查工艺文档。每次画完长走线我都习惯性地用标尺量一下线长和连到几个栅估算一下天线风险。6.3 Latch-up与保护环模拟版图的保命设计只要是CMOS工艺就存在闩锁效应风险。版图层面防止Latch-up的基本手段是衬底接触和阱接触尽量密集在P管和N管交界区域加保护环Guard Ring。保护环的做法并不复杂围绕敏感电路用N阱里的N注入形成电源环用衬底里的P注入形成地环二者形成低阻路径把注入电流导走避免触发PNPN结构导通。需要注意的是保护环要完整闭合不能留有缺口否则起不到隔离作用。功耗大的模块保护环还要加宽并增加接触孔数量确保环本身的电阻足够低。我见过不少初学者的设计匹配做得很好但保护环缺了一个角或者接触孔稀疏导致测试时出现异常漏电排查半天才发现是Latch-up防护不到位。这类问题在DRC和LVS阶段不容易暴露等到流片测试再去处理就晚了。6.4 多人协作与文件锁版图崩溃后你才知道备份多重要Virtuoso在编辑Cellview时会生成cdslck锁文件防止多人同时编辑同一个单元。如果把工作目录放在共享磁盘上同事正在编辑的Cell会锁定你只能只读打开。遇到这种情况不要强行覆盖也不要手动删除锁文件正确的做法是找正在编辑的人确认。我个人经历过最惨痛的教训是画了一下午版图然后Virtuoso崩溃重启后发现工作丢失了大半。从那以后我养成了两个习惯每隔半小时用File→Save a Copy把当前单元另存为一个备份版本或者手动Copy Cellview重要节点比如DRC clean前、加dummy之前用压包工具把整个库目录备份一份。版图设计是一次性投入很高的体力活但数据成果却没有体力恢复这么简单。多花一分钟备份可能省下你一天的返工时间。7. 最后分享两个我在实际项目里的习惯第一画版图的时候养成先布局后连线再检查的顺序。很多新手一上来就逐根连线画到后面发现整体布局不合理全部推倒重来。我习惯先摆大器件的位置把匹配组、电源环、敏感信号的相对方位都确定下来再逐块连线。看起来前期花的时间多但整体效率反而高。第二每次跑完DRC不是只关掉窗口就完事我会把错误列表导出来看一眼。如果你发现同一种错误一而再再而三地出现那说明不是单个图形的问题而是你画图的习惯有问题。比如Metal1间距错误反复出现多半是你Path没有落在格点上导致边缘微小的锯齿。从根上调整才能避免后面大量返工。版图绘制这个技能的提升曲线前期靠会操作中期靠背规则后期拼的是对工艺和电路意图的理解。工具只是把想法落到硅片上的手段真正值钱的是你心里对这块图形流片后会经历什么的判断。希望这些经验和踩坑记录能帮你少走一段弯路。
返回列表