| |||
分享两个昨天网友的需求 ,第一个是VIA density 检查。 问题来源于22年的分享文章分享几个非常有用的自定制rule 这个问题网友私信频率很高,这里把参考code分享供参考:
为了DFM和EMIR的要求,如何检查net上连线通孔是否数量足够是很有必要的。有单孔检查很简单。对于金属层间足够的空间下是否打满足够的VIA人工检查难度比较大的。下面分享code是 VIA Density 代码参考:
DRC SELECT CHECK VIA2.DENVIA2.DEN {@VIA2 Density < 0.5 metalOverlap=(M2i AND M3i CONNECTED) INTERACT VIA2ii tmp=SIZE VIA2ii BY 0.04 mergeVIAARRAY =SIZE tmp BY -0.04 DFM PROPERTY mergeVIAARRAY metalOverlap OVERLAP [R = AREA(mergeVIAARRAY)/AREA(metalOverlap) ] < 0.5 }
解释:
metalOverlap对应取出M2 与 M3 重叠且连接到相同net的区域,同时有存在VIA2的区域(下图绿色框区域)。
mergeVIAARRAY得到是M2与M3 重叠区域的VIA的外框大小(下图红色框区域)。
(如果via array的space为0.7,那我们可以先按0.7的一半宽度先size up,然后再shink 那么就可以得到 via array的外框大小)
DFM PROPERTY 计算上述两个区域的面积比值如果小于50%,作为DRC 错误报错显示。
另一个问题是perc::property 无法取出电阻的lr lw,可以切换为:
perc::value [perc::get_properties $dev -name lr]