You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PIC设计调用gdstk.Cell遇AttributeError:无get_polygons属性求助

解决AttributeError: 'gdstk.Cell' object has no attribute 'get_polygons'问题

问题根源

你遇到的错误是因为gdsfactory当前默认使用gdstk作为GDS后端,而simphony的layout_aware.py示例代码是基于旧版gdsfactory的gdspy后端编写的——gdspy的Cell类有get_polygons方法,但gdstk的Cell类没有这个接口。Y分支能正常工作是因为它可能是simphony内置组件,未调用外部gdsfactory组件的get_polygons方法。

解决方案

方案1:切换gdsfactory回gdspy后端(最快捷)

在代码开头添加以下配置,强制gdsfactory使用gdspy创建Cell,这样就能兼容simphony的示例代码:

import gdsfactory as gf
gf.config.set_gdspy()

方案2:修改代码适配gdstk后端

如果不想切换后端,需要替换所有调用get_polygons的逻辑,改用gdstk的原生接口:

  • gdstk Cell的多边形存储在cell.polygons属性中,直接遍历即可获取所有多边形
  • 示例替换逻辑:
    # 原代码(gdspy):
    # polygons = cell.get_polygons(by_spec=True)
    
    # 替换为gdstk兼容代码:
    polygons = []
    for poly in cell.polygons:
        polygons.append((poly.points, poly.layer, poly.datatype))
    
    需要找到simphony中调用get_polygons的位置(可能在layout_aware相关模块),逐一修改适配。

方案3:安装兼容旧版gdsfactory

如果上述方法都麻烦,可以安装仍默认使用gdspy的gdsfactory旧版本(不推荐,会错过新功能修复):

pip install gdsfactory==6.104.0

注意事项

  • 确认依赖版本:simphony目前可能尚未完全适配gdsfactory的gdstk后端,切换回gdspy是最稳妥的临时解决方案
  • 检查组件创建:光栅耦合器、波导等组件是直接从gdsfactory获取的(底层为gdstk Cell),而Y分支是simphony内置组件,因此出现差异

内容的提问来源于stack exchange,提问作者NachosForCinema

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:25:23