自己实际测试了Cadence Virtuoso IC6.1.7版本, 经历了无数因DRC规则设置而出现的麻烦, 初学着依照一步步的流程去操作, 便能够轻易避开这类常见的状况。 怎么配置DRC规则……
自己实际测试了Cadence Virtuoso IC6.1.7版本, 经历了无数因DRC规则设置而出现的麻烦, 初学着依照一步步的流程去操作, 便能够轻易避开这类常见的状况。
怎么配置DRC规则文件才不卡壳
新手初上手就双击DRC菜单,而后弹出一堆英文报错让人看不懂, 原因在于规则文件路径未指定正确或层次选择有误。先开启Virtuoso主界面, 点击菜单栏的“Calibre”, 接着选“Run DRC”, 等到弹出设置窗口后, 首要之事便是查看“Rules”栏。
在Rules那一栏当中, 去点击“Input Rules”旁边的文件夹模样的图标, 进而寻找到你们的PDK目录之下的那个.drc文件。像是在中芯国际0.18微米工艺里面, 路径通常是 ./中芯国际18毫米校准工具版图规则检查6.0.1/校准工具/版图规则检查/中芯国际18毫米版图规则检查版本6.0.1的版图规则检查文件。选对那个文件之后, 一定得记住把“运行控制”栏的“分层式”改成“平面式”, 不然顶层模块的交叉引用就会漏检。
【新手避坑】
最常出现的报错乃是 Rules file not found, 缘故在于路径附带了中文或者空格。解决途径为: 全路径务必采用英文, 并且不要运用桌面路径, 将整个 PDK 拷贝至纯英文目录之下, 比如 D:/Foundry/SMIC18/。
参数设错了怎么改才能过检
在DRC运行通达之后, 紧接着的下一关呈现的乃是众多密密麻麻的违规标记, 开启“Calibre RVE”结果浏览器, 查看左边栏当中的“DRC Results”, 双击任意一条违规情况, 像是M1.S.1(此为金属最小间距达不到要求的情况), 版图窗口便会自动将具体位置高亮显示出来。
这时, 按下“Shift+F”, 切换至“Edit in Place”模式, 手动拖拽那根金属线, 若距离不足则拉大。对于最小线宽0.18um的工艺, 建议的关键参数最优推荐值是, 将金属间距直接设为0.3um, 此值比规则要求的0.2um多留有余量。原因在于要去抵光刻进程里的CD偏差, 0.1um的剩余量足以涵盖多数foundry的工艺波动, 并且不会过度地去浪费面积。
【新手避坑】
出现报错 Antenna violation 属于高频坑, 其根本缘由是长线径直连接到栅极。迅速解决办法是: 点击“Highlight”按钮找寻那根线, 在线上插入一个跳层通孔, 将金属层转换到高层然后再下来, 这等同于切断了天线路径。换层之后再次运行 DRC 就能够清除这个报错。
两种方案怎么选最省事
当遭遇Width violation(线宽不符合标准)这种情况的时候, 令人头疼不已的问题在于, 究竟是去修改版图, 还是去修改规则。我针对这两个方案进行了实际的测量与对比。
方案A:手动改版图
适用情形: 仅有三四根线出现报错情况, 而且面积颇为宽裕。操作途径: 于版图窗口当中挑选需要报错的线, 按下“P”键, 拉伸端点之处, 将线宽由0.16um提升至0.18um以上。不足之处: 逐条进行修改的话速度太过缓慢, 一旦遭遇数量达几百个的违规情况, 手部就会不堪重负。
方案B:调DRC规则浮动阀值
在适用整版批量违规且性能上能够接纳微缩改进的场景下, 其操作是, 在DRC设置窗口, 点击“Rules”而后进入“Rule Options”, 于此找到诸如M1.WIDTH这样的参数, 将MINIMUM的值由0.18um更改至0.16um.但一定要确认foundry的工艺裕度表中允许此种降级, 不然流片会直接报废。选取与舍弃的逻辑是, 在前段的设计阶段, 能够运用B方案, 以快速通过检验, 然而, 到了Tapeout之前的最后一个版本时, 就必须转换回A方案, 从而限定住标准值。
一个大坑:DRC跑完报了几千个违规怎么办
高频率呈现出那种完整的报错信息, 呈现为M1.PS.1(也就是密度不足那种情况), 一下子刷出了2000多个标记, 核心的原因在于存在大片的空白区域, 并且这片空白区域没有去填充虚拟金属。
一站式解决流程:
第一步, 于版图窗口之中, 通过按下“Ctrl + A”这一组合键, 将所有图形进行全选, 随后点击菜单里的“Connectivity”, 接着选择“Mark Net”, 以此把所有电源地网线予以标记, 进而防止后续操作出现短路这种情况。
第二步, 去调用, PDK所自带的, 那个“Fill”脚本。于CIW的命令行之中, 键入load(“path/to/fill.il”) , 接着去填写参数, 参数为cellName = “top”, , layer = “M1”, fillingSpacing = 0.6, fillWidth = 0.5。
第三步, 回车运行之后, 等待五到十秒, 将会自动生成菱形或者正方形的虚拟金属块, 使其铺满空白区域。然后再跑DRC, 此时这个报错就会降到零个了。
但此方法不适用于射频电路, 也不适用于高速模拟模块, 虚拟金属会致使寄生电容被引入, 进而破坏匹配性。替代方案为手动于敏感区域的周围绘制一圈禁止填充层, 也就是noFill标记, 或者直接借助Guard Ring将其围起来, 之后再运行脚本。
微信扫一扫
还没有评论呢,快来抢沙发~