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

Phidl库微米转纳米单位设置及特定参数圆阵列实现问询

Phidl单位转换与多规格圆阵列实现

单位转换说明

Phidl默认以**微米(μm)**作为输入单位,而GDSII文件的原生单位是纳米(nm),两者转换关系为:

  • 1 μm = 1000 nm
  • 若要使用纳米规格,只需将数值除以1000转换成微米后直接在代码中使用即可。例如:
    • 50 nm → 0.05 μm
    • 100 nm → 0.1 μm
    • 2000 nm → 2 μm

需求实现代码

以下是针对需求重构后的代码,实现9组40×40的圆阵列,包含指定直径规格,且100nm直径的圆中心间距为200nm:

import phidl.device_layout as dl
import phidl.geometry as pg
from phidl import quickplot as qp

# 定义所有需要的圆直径(单位:nm),转成Phidl使用的μm
diameters_nm = [50, 100, 200, 250, 300, 500, 1000, 2000, 3000]  # 第9个规格可按需调整
diameters_um = [d / 1000 for d in diameters_nm]

# 创建总容器,用于存放所有阵列和die标记
total_container = dl.Device()

# 每组阵列的布局偏移,按3x3排列9组避免重叠
grid_cols = 3
col_spacing = 10  # 组之间的横向间距(μm)
row_spacing = 10  # 组之间的纵向间距(μm)

for idx, diam_um in enumerate(diameters_um):
    # 创建当前规格的阵列容器
    array_device = dl.Device(name=f'array_{diameters_nm[idx]}nm')
    
    # 设置pitch:100nm直径对应200nm(0.2μm),其他规格设为直径的2倍(可按需调整)
    if diameters_nm[idx] == 100:
        pitch_um = 0.2
    else:
        pitch_um = diam_um * 2
    
    # 创建单个圆(只需创建一次,后续引用即可)
    circle = pg.circle(radius=diam_um/2, angle_resolution=2.5, layer=0)
    
    # 生成40×40阵列
    for i in range(40):
        for j in range(40):
            # 复制圆并设置位置
            circle_copy = array_device << circle
            circle_copy.x = i * pitch_um
            circle_copy.y = j * pitch_um
    
    # 将当前阵列放到总容器的对应网格位置
    col = idx % grid_cols
    row = idx // grid_cols
    array_device.x = col * (array_device.xsize + col_spacing)
    array_device.y = row * (array_device.ysize + row_spacing)
    total_container << array_device

# 添加基本die标记
die = pg.basic_die(
    size=(total_container.xsize + 20, total_container.ysize + 20),  # 适配总尺寸
    street_width=1,
    street_length=5,
    die_name='Multi-spec Circle Arrays',
    text_size=3,
    text_location='S',
    layer=0,
    draw_bbox=False
)
total_container << die
die.center = total_container.center  # 让die标记居中

# 预览和导出
qp(total_container)
total_container.write_gds('multi_circle_arrays.gds')

代码关键说明

  • 单位转换:通过列表推导式直接将纳米直径转换为微米,符合Phidl的输入要求。
  • 阵列生成:单个圆仅创建一次,后续通过复制提升效率;根据直径规格动态设置pitch,满足100nm直径的特殊间距要求。
  • 布局排列:将9组阵列按3×3网格排列,通过计算行列位置避免重叠,布局更规整。
  • die标记适配:根据总阵列尺寸调整die大小,确保标记能完整包围所有阵列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:04:56