Creating a new design based on a PDK

This tutorial demonstrates how to create a new design cell by placing cells from a library and routing waveguides:

Step 1: Start a new design

Starting point: L-Edit has been launched from Luceda Control Center. No library or design is open. Start a new design by choosing File ‣ Design ‣ New from the menu or press Ctrl-n (Fig. 112).

Choose OpenAccess as the Database and enter a name and the desired path in which the new design library will be created (Fig. 113). Since we will base this design on a Process Design Kit (PDK), select OpenAccess attached library as Technology reference. The new design will then automatically use the selected technology.

Step 1: New design

Fig. 112 Creating a new design.

New design details

Fig. 113 Creating a new design using an OpenAccess database with an OA attached technology library.

In the next dialog box (Fig. 114) you need to specify lib.defs file location. This file contains information about all libraries that will be included in your design. Choose to create a new one in the default location:

New design details

Fig. 114 Specify the location to the lib.defs file.

Next (Fig. 115), select the technology library of choice and set it to be the Attached Library by pressing the Set button. At first, the list of Available technology libraries is empty. Add your PDK library using the Add button. In the Open dialog box, dive into the openaccess folder inside the IPKISS-based PDK you have (typically provided by the foundries), and select the library folder there (Fig. 116)

Setup Technology Reference dialog

Fig. 115 Dialog window to choose the OpenAccess attached PDK library.

Open openaccess library

Fig. 116 Open OpenAccess technology library

After pressing OK, you should see two open libraries in the Libraries panel: the newly created design and the PDK (see Fig. 117), and the design layers in the Layer Palette panel (Fig. 118).

Libraries panel

Fig. 117 Main L-Edit window showing which libraries are opened.

Layer Palette panel

Fig. 118 Layer palette with the layers as specified by the technology.

Step 2: Instantiate cells

Now, we will create a new cell in our (still empty) design by instantiating child cells from the PDK library. First, in the Libraries panel, make sure to select the new design (PDKBasedDesign in this example). The list of cells should still be empty. Right-click in the (empty) list of cells and select New… from the context menu, or simply press n, to create a new cell.

In the Create New Cell dialog, enter a name for the new cell (Fig. 119).

New cell

Fig. 119 Creating a new design in the new library “PDKBasedDesign”.

Now select the PDK library from the Libraries panel and drag-and-drop the desired cells into the layout window. There are two types of cells: static cells and parametric cells (pCells). When we drag-and-drop a static cell into the new cell, a new instance of that static cell is created and their layout are immediately visualized. In case of a parametric cell, a parameter window will pop up (Fig. 120). When user changes a parameter from its default, it turns from blue to black color.

PCell instance

Fig. 120 Instantiating PCells will open a new dialog box to set the parameters (note: IPKISS PCell properties are translated into L-Edit parameters).

In the example in Fig. 121, four cells were instantiated in the new design (FiberCoupler1, DropRing, MziMod1 and PhotoDetector1).

PCell instance

Fig. 121 Example design after drag-and-drop of several cells from the PDK library.

Step 3: Route and generate waveguides

After the instances of library cells are placed, we can start to wire them up with waveguides. First, some setup is required:

  • The wire width should be set to a non-zero value in order to conveniently change the waveguide routes afterwards. Select the Wire Width drop-down from the toolbar (Fig. 122) and set the value, e.g. 1.0 um.
  • While routing waveguides, wires should snap to our cell’s pins. Select Enable Object Snap from the toolbar and then select Object Snap Pin (Fig. 123).
Setting up wire width

Fig. 122 Changing the wire width so we can conveniently change the waveguide routes afterwards.

Setting up object snap

Fig. 123 Enable snapping to pins.

Now, select a trace layer from Layer Palette. This is an assisting layer which has been set up in the IPKISS technology that helps routing waveguide (Fig. 124). Each trace layer corresponds to a specific type of waveguide which will be used by default.

Then, select the All-Angle Wire tool from the toolbar (Fig. 125).

Select trace layer

Fig. 124 Selecting the trace layer, which is used to define waveguides.

Select all-angle wire tool

Fig. 125 Select All-Angle Wire tool to draw waveguide control shapes on the trace layer.

We’re now ready to draw the routes of the waveguide and generate its layouts. Using the All-Angle Wire tool, we draw wires on the trace layer from one pin to another (Fig. 126). Wires are connected to the pins easily now that Object Snap option is on.

You can now either draw a specific route, or just draw a straight line.

  • In case you draw a straight line, IPKISS will convert the route (if needed) into a manhattan route before generating the waveguide.
  • In case you draw a specific route (placing control points by mouse-clicking), IPKISS will use that route to generate the waveguide.
Draw a route

Fig. 126 Drawing a route on the trace layer using All-Angle Wire tool.

In our example design, after drawing 3 routes (2 straight routes and 1 route with specified control points), we have a design looks like in Fig. 127.

Cells are routed

Fig. 127 Design after cells have been connected with control shapes.

Now, select Luceda ‣ Generate All Waveguides from the menu bar (Fig. 128) or press Ctrl-Shift-w.

Waveguide generation menu item

Fig. 128 Generating all waveguides based on the drawn control shapes.

Waveguide layout is generated with the specified waveguide width and necessary roundings at bends (Fig. 129).

Waveguides as-generated

Fig. 129 Design with the implemented waveguide layout.

Step 4: Adapt waveguide routes

The generated waveguides are not ideal yet since two waveguides are crossing and some routes are not yet optimized. There are two ways to adapt a route and waveguide:

  • Drag its trace (control shape) to the desired location. See Fig. 130. Select the control shape on the trace layer with mouse, drag it to the desired location and release. This method is convenient for manhattan routes (because L-Edit understands manhattan wires and assists in re-drawing properly).
  • Edit its control shape manually. See Fig. 131. Select the control shape on the trace layer, and press Ctrl-e. The Edit Object(s) dialog will pop up. Adapt the coordinates manually and press OK. This method is used when accurate control of the waveguide routing is needed.

In either case, press Ctrl-Shift-w to update one waveguide or all waveguides at once.

Dragging a trace

Fig. 130 Dragging an existing control shape to update the waveguide routes.

Manually editing a trace

Fig. 131 Manually updating the control shape.

After modifying the waveguide route by dragging the trace between the fiber coupler and the ring, and by editing the control shape between the ring and the modulator, our example design looks like in Fig. 132.

Waveguides are adapted

Fig. 132 Design after modifying the waveguide routes.

Make sure to save the design! You can always continue the design later on: changing the location of cell instances, adapting routes and waveguides, and so forth.