LoginSignup
0
0

More than 1 year has passed since last update.

gdstkでフォトマスク設計①

Posted at

今回からは実際にフォトマスクの設計について学んでいきたい。

今回も@isourouさんの記事を参考にして自分の備忘録として残していく。

まず、以下のコードを実行した。

import gdstk

lib = gdstk.Library() #特に指定しなければ単位はum
topcell = lib.new_cell("Top") #Topセルを作成

subcell = lib.new_cell("subcell") #サブセルを作成
box = gdstk.rectangle((0,0), (1,2)) #左下(0,0),右上(1,2)の四角形を作成
subcell.add(box) #四角形をサブセルに追加
ref = gdstk.Reference(subcell, origin=(0,0), columns =3, rows =2, spacing = (5,5)) #サブセルへの配列リファレンスを原点(0,0)に挿入。3行2列で、間隔は(5,5)
topcell.add(ref) #サブセルへのリファレンスをTopセルに挿入。


text = gdstk.text('First GDS',2, (0,10)) #高さ2のテキストを位置(0,10)に挿入。
topcell.add(*text) #gdstk.textは1文字ずつのPolygonのリストを返すので、*textでリストをunpackしてadd()に渡す。

lib.write_gds('output.gds') #gdsファイル出力
topcell.write_svg('output.svg') #svgファイル出力

早速1行毎に追っていきたい。

import gdst

gdstkモジュールをインポートしている(おまじない)

lib = gdstk.Library()

gdstkクラスのLibraryメソッドで、libに設計ルール(寸法など)やセルを含むライブラリを作成している
class gdstk.Library(name='library', unit=1e-6, precision=1e-9)
name: ライブラリ名の文字列。
unit: ライブラリ名で用いられる長さ単位[m]。特に指定しなければ1 umになる。
precision: ライブラリ内で用いられる寸法精度[m]。リソグラフィ装置の仕様に応じて決定すること。特に指定しなければ1 nmになる。ライブラリ内部では、寸法はprecisionを1とした整数値として保存される。

topcell = lib.new_cell("Top")

libに"Top"という名前のセルを追加し、変数topcellに格納する。

subcell = lib.new_cell("subcell")

1行上と同じような内容

box = gdstk.rectangle((0,0), (1,2))

rectangleメソッドで長方形を変数boxに代入する

subcell.add(box)

セル(subsell)にジオメトリ要素を追加する

ref = gdstk.Reference(subcell, origin=(0,0), columns =3, rows =2, spacing = (5,5))

他セルへのリファレンスを出力する
セル(subcell)を基に、(0,0)の位置からx方向に5、y方向に5開けてx方向に3つ、y方向に2つ複写する
(他の引数は公式を参照してください)

text = gdstk.text('First GDS',2, (0,10))

テキストパターンを出力してtextに格納している

topcell.add(*text)

gdstk.textは1文字ずつのPolygonのリストを返すので、*textでリストをunpackしてadd()に渡す。

lib.write_gds('output.gds')

ライブラリ(lib)をgds形式で出力

topcell.write_svg('output.svg')

セル(topcell)をsvg形式で出力

殆どが参考にした記事の写しになってしまいました、、、
後々はboolean処理やPathについても説明を加えていきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0