luceda ipkiss教程 70:合并GDS版图

通过代码拼版:
在这里插入图片描述
所有代码如下:

from si_fab import all as pdk
from ipkiss3 import all as i3

class Design1(i3.GDSCell):

    def _default_filename(self):
        return "Ring_Test.gds"

    def _default_name(self):
        return "Design1"

class Design2(i3.GDSCell):

    def _default_filename(self):
        return "routed_opa.gds"

    def _default_name(self):
        return "Design2"

class Design3(i3.GDSCell):

    def _default_filename(self):
        return "SplitterTree2Levels.gds"

    def _default_name(self):
        return "Design3"

class Chip(i3.PCell):

    def _default_name(self):
        return "My_Chip"

    unprefixed_library = i3.DefinitionProperty(doc="The names of the cells that are unprefixed")

    def _default_unprefixed_library(self):

        l = i3.Library(name="unprefixed_library")
        l.add(pdk.MMI1x2Optimized1550())
        l.add(pdk.FC_TE_1550())

        return l

    class Layout(i3.LayoutView):

        def _generate_instances(self, insts):

            frame = pdk.Template2500x1250()
            frame_lv = frame.Layout()

            design1 = Design1(unprefixed_library=self.unprefixed_library)
            design1_lv = design1.Layout()

            design2 = Design2(unprefixed_library=self.unprefixed_library)
            design2_lv = design2.Layout()

            design3 = Design3(unprefixed_library=self.unprefixed_library)
            design3_lv = design3.Layout()

            insts += i3.SRef(
                reference=frame_lv,
                position=(0, 0),
                name="frame"
            )

            insts += i3.ARef(
                reference=design1_lv,
                n_o_periods=(1, 12),
                period=(0, 100),
                origin=(100, 50),
                name="ring"
            )


            insts += i3.SRef(
                reference=design2_lv,
                position=(800, 750),
                name="opa"
            )

            insts += i3.ARef(
                reference=design3_lv,
                n_o_periods=(4, 3),
                period=(500, 200),
                origin=(600, 80),
                name="SplitterTree"
            )

            return insts


if __name__ == '__main__':

    chip = Chip()
    chip_lv = chip.Layout()
    chip_lv.write_gdsii("merged_chip.gds")

注意:运行该代码需要三个待拼版的gds文件

不需要加后缀的器件,可以加入到:

    def _default_unprefixed_library(self):

        l = i3.Library(name="unprefixed_library")
        l.add(pdk.MMI1x2Optimized1550())
        l.add(pdk.FC_TE_1550())

        return l
  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值