如何在 IPKISS 中画一个多边形?

直接利用 IPKISS 的 i3.RegularPolygon 画多边形

# Importing the technology and IPKISS
from si_fab import all as pdk
from ipkiss3 import all as i3

class N_side_polygon(i3.PCell):

    _name_prefix = "N_side_polygon"
    trace_template = i3.TraceTemplateProperty(doc="Trace template of the access waveguide")
    center = i3.Coord2Property(default=(0.0, 0.0), doc="Center of the polygon")
    radius = i3.PositiveNumberProperty(default=1.0, doc="Radius of the polygon")
    n_o_sides = i3.IntProperty(default=8, restriction=i3.RestrictRange(lower=3), doc="Number of sides fo the polygon")
    def _default_trace_template(self):
        return pdk.SiWireWaveguideTemplate()

    class Layout(i3.LayoutView):
        def _generate_elements(self, elems):
            elems += i3.RegularPolygon(
                layer=self.trace_template.core_layer,
                center=self.center,
                radius=self.radius,
                n_o_sides=self.n_o_sides,
            )
            return elems

if __name__ == '__main__':
    polygon = N_side_polygon(
        center=(0,0),
        radius=100,
        n_o_sides=10,
    )
    demo = polygon.Layout()
    demo.visualize(annotate=True)
2023-06-21
0