在光子集成线路设计时,有时候需要知道线路中某一段波段的长度,那么在ipkiss中如何获取波导的长度信息呢?
老规矩,先给代码。
from si_fab import all as pdk
from ipkiss3 import all as i3
insts = {
"gr0": pdk.FC_TE_1550(),
"gr1": pdk.FC_TE_1550(),
}
specs = [i3.Place("gr0", (0, 0)),
i3.Place("gr1", (100, 100), angle=180),
i3.ConnectManhattan("gr0:out", "gr1:out"),]
demo = i3.Circuit(insts=insts, specs=specs)
demo.Layout().visualize(annotate=True)
print(demo.Layout().layout[2].reference.trace_length())
通过visualize可以画出器件的版图:
通过下面这段代码就可以获取两个光栅之间连接波导的长度
print(demo.Layout().layout[2].reference.trace_length())
通过下面代码显示的结果就可以发现长度信息的获取过程
print(demo.Layout())
print(demo.Layout().layout)
print(demo.Layout().layout[2])
print(demo.Layout().layout[2].reference)
print(demo.Layout().layout[2].reference.trace_length())
长度信息获取还可以通过:
length = demo.Layout().layout.get_instances()["gr0_out_to_gr1_out"].reference.trace_length()
print("length = {}".format(length))