一、基础语法
1、lib
在 gdstk 中,lib 是最上层的东西,原话是这样说的,The GDSII file is called a library, which contains multiple cells。即:GDSII 文件称为库,其中包含多个单元格。我们保存 gds 文件就是通过 lib 来保存的,在后面会看到创建 lib 的代码。
2、cell
cell,就是我们上面提到过的单元格,我们创建的图形和图像会保存在这里。另外,也可以通过 cell 来保存 SVG 图像,保存的是这一个 cell 里面的内容。
3、rectangle
import gdstk as gk
point1 = (0,0)
point2 = (2,1)
lib = gk.Library()
cell = lib.new_cell("cell_1")
rect = gk.rectangle(point1,point2)
# 打印矩形的四个点
print(rect.points())
在上面的代码中,我们定义了两个点,一个是矩阵的左下角顶点,另一个是矩阵的右上角顶点。然后,我们创建了一个 Library,在 lib 中创建了一个 cell。最后,创建了一个矩形,打印出矩形的顶点。但是现在我们还没有把他加入到 cell 单元格中。
4、Polygon
根据一系列的点,创建一个多边形,但是多边形的边不能穿插而过。
5、Curve及segment
角点,segment,relative。
6、layer and datatype
官方文档提到,layer 和 datatype 没有任何提前定义的实际含义,我们可以根据自己的需要来定义。比如 layer 是层数,datatype 可以代表不同的光刻水平或制造掩膜。
二、图形操作
1、平移
relative,位置的相对移动。
2、截取
即 slice ,切片。
3、旋转
引用的时候有个rotation,单位是弧度。
4、transform
三、读取gds文件
1、加载gds文件
lib = gdstk.read_gds("poly.gds")
print(lib,type(lib))
info = lib.layers_and_datatypes()
print(info)
2、获取文件信息
# 获取文件信息
lib = gdstk.read_gds("poly.gds")
print(lib,type(lib))
# 层数和datatype信息
info = lib.layers_and_datatypes()
print(info)
# 精度 1e-9
pre = lib.precision
# unit 单位 1e-6
unit = lib.unit
3、获取单元格信息
3.1 获取单元格名称
# 获取所有单元格名称
cells = {c.name for c in lib.cells}
4、获取单元格内容
# 获取单元格内容