Known changes and backwards incompatibilities in 2024.12

Colon ‘:’ not allowed in port names

A ValueError is raised when a colon is encountered in the name of an exposed port. The following code will throw an error:

import ipkiss3.all as i3

circuit = i3.Circuit(insts={"wg": i3.Waveguide()}, exposed_ports={"wg:in": "wg:in", "wg:out": "wg:out"})

layout = circuit.get_default_view(i3.LayoutView)
layout.visualize(annotate=True)

Port names should not contain a colon ‘:’ as it may become very confusing when using these ports later during placement and routing.

Uniqueness of connection names required

A ValueError is raised when connection names specified are not unique. The following code will throw an error:

import ipkiss3.all as i3

wg = i3.Waveguide()

circuit = i3.Circuit(
    insts={"first": wg, "second": wg},
    specs=[
        i3.Place("second", position=(20, 20), relative_to="first"),
        i3.ConnectBend("first:in", "second:out", "my_name"),
        i3.ConnectBend("second:in", "first:out", "my_name"),
    ]
)

circuit.Layout().visualize()

Before, only one connection with a particular name was created, meaning a connection could be missing in the layout. Note that it is not obligatory to give a name to a connector. if you do not give any name, a unique name is automatically assigned (this behavior has not changed).

Removal of NameProperty

NameProperty in ipkiss3.core.name_generator.name_property has been removed. Please import from ipkiss3.pcell.cell.pcell.

from ipkiss3.core.name_generator.name_property import NameProperty

Becomes

from ipkiss3.pcell.cell.pcell import NameProperty