芯片设计规模持续增大,在动不动就有上亿门的电路当中,成千上万条设计规则检查问题常常是致使项目延期的隐匿杀手。批量DRC排查可不是单纯的“挑刺”,而是一项从杂乱里构……
芯片设计规模持续增大,在动不动就有上亿门的电路当中,成千上万条设计规则检查问题常常是致使项目延期的隐匿杀手。批量DRC排查可不是单纯的“挑刺”,而是一项从杂乱里构建秩序、从表面探寻根源的系统工程呢。好多工程师一开始就掉进海量报错的茫茫大海了,手动逐个去修复,结果常常是顾此失彼。真正高效的批量排查,关键在于对错误实行“降维打击”,换句话说是借助分类以及模式识别,用自动化思路取代手工劳作。
批量DRC如何快速分类
面对数量达到几千甚至于上万的DRC错误,第一步并非直接动手去修改,而是要先为它们“贴上标签”,借助版图工具所具备的筛选功能,依照错误类型、坐标区域或者层次结构来开展分组。你会察觉到,大部分错误常常是同一类问题的反复出现,像是某条特定金属层的间距出现违规情况,又或者是某个标准单元与邻近模块之间存在拼接缝隙。在把错误进行归类之后,便能够识别出主要的“罪魁祸首”,而不是被零散的个体错误牵着行动。这一步要是做好了,后续才能够达成事半功倍的效果且效率大大飞升。
如何找到重复性错误规律
重点是于观察共性里去寻觅重复性错误,将错误列表打开,随机抽取几个看上去没关联的报错点,对它们周边的版图环境予以比对。比如说,是否全部错误都出现在电源地线的拐角之处呢?又或都处于模拟模块与数字模块的交界区域呢?一旦发觉规律,像“M1层于穿过大电流PAD区域之际宽度不够”,你所面对的便从几千个点被简化成一个“设计规则”或者“脚本修复”问题。此时,你需要思索的是怎样去修改一个基础版图单元或者调整一项通用的布线策略。
怎样利用脚本高效批量修复
错误被归类且找到规律之后,就应当请出脚本这个得力助手。可以借助编写 Shell 抑或 Python 脚本调用版图工具的接口,完成简单的重复性位移或者尺寸修正。举例说明,针对所有间距违规的平行金属线,能够批量执行“推挤”操作。然而使用脚本时必须要小心谨慎,得先行在小范围区域进行验证,保证脚本的逻辑不会引入新的、更为隐蔽的错误 ,高效修复的关键在于“批量操作,局部验证”,凭借代码的确定性抗衡手工的随机性。
批量修复后的复查要点
不能认为脚本运行结束就一切都没问题了,在进行批量修复之后,务必要开展一轮速度较快的回归性检查,着重留意那些经过批量操作的区域边缘,以及脚本逻辑所覆盖的临界点,像是规则的最小值边界的地方,除此之外,随机挑选几个修复过的具有代表性的位置,凭借人眼再次审核一下是否彻底干净,有没有由于批量操作致使图形出现粘连或者意外的断路,这一步骤是预防自动化修复招致新问题的最后一道防护线,也是积累相关经验、优化下一次批量脚本的关键要点。
在项目实际进程当中,你所碰到的最令人头疼不已的批量DRC错误究竟是哪一种分类?是那种乍一看毫无任何规律可循的“散弹式”报错情形,又或者是由于某个IP核尺寸方面的问题从而导致的“多米诺骨牌”样式违规现象?欢迎于评论区域分享你排除此类问题的经历,一块儿探讨更为巧妙的排查方式方法。要是觉得本文内容对你具有一定帮助,可千万别忘记点赞之后分享给更多并肩前行共同作战的同行伙伴们!
微信扫一扫