luceda ipkiss教程 41:画跑道型微环

利用picazzo库中的方向耦合器绘制跑道型微环:

在这里插入图片描述

from si_fab import all as pdk
from ipkiss3 import all as i3
from picazzo3.wg.dircoup import StraightDirectionalCoupler

class RingResonator(i3.PCell):
    trace_template = i3.TraceTemplateProperty(
        default=pdk.SiWireWaveguideTemplate(),
        doc="Trace template of the bus waveguide, also used for the default loopback waveguide"
    )
    coupling_length = i3.PositiveNumberProperty(default=10, doc="The coupling length of the ring resonator")
    spacing = i3.PositiveNumberProperty(default=0.5, doc="The spacing between the bus and ring waveguides")


    class Layout(i3.LayoutView):
        def _generate_instances(self, insts):
            coupler = StraightDirectionalCoupler(
                trace_template1=self.trace_template,
                coupler_length=self.coupling_length
            )
            coupler.Layout(coupler_spacing=self.spacing)
            instances = {'coupler': coupler}
            specs = [
                i3.ConnectManhattan(
                    'coupler:out2',
                    'coupler:in2',
                    control_points=[
                        i3.V(i3.START + i3.TECH.WIREWG.BEND_RADIUS),
                        i3.H(i3.PREV + 2 * i3.TECH.WIREWG.BEND_RADIUS)
                    ],
                    min_straight=0
                )
            ]
            insts += i3.place_and_route(insts=instances, specs=specs)
            return insts

        def _generate_ports(self, ports):
            ports += i3.expose_ports(
                instances=self.instances,
                port_name_map={
                    'coupler:in1': 'in',
                    'coupler:out1': 'out'
                }
            )
            return ports

    class Netlist(i3.NetlistFromLayout):
        pass

    class CircuitModel(i3.CircuitModelView):
        def _generate_model(self):
            return i3.HierarchicalModel.from_netlistview(self.netlist_view)

if __name__ == "__main__":
    default_ring = RingResonator(
        coupling_length=10,
    )
    default_ring_lv = default_ring.Layout()
    default_ring_lv.visualize(annotate=True)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值