KLayout DRC输入层过滤器使用注意事项
klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout
关于DRC输入层过滤器的正确使用方式
在KLayout的DRC脚本中,用户经常需要从版图中提取特定层的数据进行处理。常见的提取方式包括使用层号/数据类型组合或层名称来指定目标层。然而,这两种方式在使用上存在一些需要注意的差异。
层指定方式的对比
传统上,KLayout支持两种层指定语法:
- 使用LayerInfo对象明确指定层号和数据类型
- 使用字符串格式指定层名称或层号/数据类型组合
例如,以下两种方式在理论上应该等效:
active = input(RBA::LayerInfo.new(43, 1, "active"))
active = input("active (43/1)")
然而,实际上第二种方式在最新版本的KLayout中会抛出错误。这是因为字符串格式的层过滤器语法已经演变为支持更复杂的多层选择功能。
多层输入过滤器的正确用法
现代KLayout版本中,字符串格式的层过滤器主要用于以下场景:
- 通配符选择:可以选择特定层的所有数据类型
# 选择层1的所有数据类型
l1_all = input("1/*")
- 多条件组合:可以同时选择多个层/数据类型组合
# 同时选择层1/0和层10/0
combined = input("1/0", "10/0")
因此,要实现最初的需求,正确的写法应该是:
active = input("active", "43/1")
最佳实践建议
-
优先使用层号/数据类型:在处理GDS或OASIS格式时,建议直接使用层号/数据类型组合,因为这些格式中:
- GDS完全不支持层名称
- OASIS中的层名称可能不唯一或不存在
- 只有层号/数据类型组合能确保精确匹配
-
层名称的使用场景:层名称主要适用于CIF和DXF等基于名称的格式,或者当用户确实需要基于名称选择层时。
-
明确性优先:在关键脚本中,使用LayerInfo对象或明确的层号/数据类型组合可以提高代码的可靠性和可维护性。
通过理解这些差异和最佳实践,用户可以更有效地编写DRC脚本,避免常见的层选择错误。
klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考