Your source of photonics CAD tools

PICWave

A photonic IC, laser diode and SOA simulator

Building Block System

A PICWave building block is a sub-circuit (a laser or MZI, for example) which can be used and re-used as an element in any other circuit. PICWave allows you to create your own libraries of building blocks, import existing building block libraries and use the building blocks therein to construct larger circuits, just as you would with PICWave's native circuit elements.

Building blocks can include native PICWave circuit elements as well as detailed passive components models imported from FIMMPROP. This allows you to create building block libraries of FIMMPROP components which can then be parameterised and used to build a tailored circuit without the need for any knowledge of FIMMPROP.

When creating a building block you can specify the way in which it is to be used by choosing for instance which parameters the user can edit, which ports/contacts are available to the user and the way it appears on the user's circuit canvas.

In summary, the building block system enables you to:

  1. Build and import design kit libraries of tested, qualified building blocks with built-in parameter checking, enabling circuit designers to build circuits quickly with much reduced scope for costly errors.

  2. Make large circuits less cumbersome by hiding away complexity within building blocks.

Designing building blocks  

Buildings blocks are created as part of a building block library, which can contain an arbitrary number of building blocks.  

Building Block Library

A building block library project opened for editing in PICWave

Each building block may be given a set of variables which the building block user (circuit designer) will be able to edit. These can be used to parameterise the building block model e.g. the length of a section, the width of waveguide ridge etc, and can be given a range of allowed values so as to enforce design rules. You can also specify how each building block will appear in the user’s circuit, which ports will be visible, and specify version numbers to enable version control. 

Designing a Building Block

(top) panel for setting bitmaps for building block’s appearance and specifying version number;
(bottom) panel for defining user-editable building block variables, which can then be
used to set specific parameters of the building block circuit

Each building block in a library can be modelled using either: a circuit made from built-in elements; or a scattering matrix (S-matrix) spectrum, which can capture the detailed wavelength response of passive components. The latter may be automatically generated from an internally stored FIMMPROP component device. Both types of model can be parameterised in terms of the building block’s variables. 

Designing a Building Block

A Y Coupler building block with two possible circuit models: (top-right) constructed from built-in PICWave circuit elements,
and (bottom-right) constructed using an S-matrix spectrum generated from an internally stored FIMMPROP device

Using building blocks to construct circuits

When constructing a circuit in PICWave, you can import one or more building block libraries which you or a third party have made previously. The building blocks from these libraries will then appear in the toolbar of the circuit editor so you can add them to your circuit just as you would add native circuit elements.

Designing a Circuit with Building Blocks

Building blocks from imported libraries can be added to circuits and used just like native circuit elements.
Note how the appearance of the FP laser building block here corresponds with what its designer
chose (i.e. symbol bitmap, visible ports and contact), as shown in the figures above.

You can set the properties of each instance of a building block in a circuit; the properties panel will list all the variables that the building block designer has made user-editable. PICWave will check that the values you enter are within the allowed ranges specified by the building block designer. 

Setting the Building Blocks variables

Setting the values of the building block variables: the user-editable variables
shown here are those defined by the building block designer

The building block system can be used to import or create design kits: lib: libraries of qualified, standard building blocks which circuit designers can then use to construct their circuits. InP-based design kit libraries for Oclaro and FhG Heinrich Hertz Institut fabs are available.

Building Block circuit example

An example of a circuit comprised of building blocks. If each building block has been carefully qualified by the building block designer, the circuit designer can be confident about the accuracy of the circuit simulation results.

Mask Layouts

In later versions of PICWave, building block designers will be able to define the physical layout of building blocks, thus enabling PICWave to generate the layout of circuits comprised of building blocks for mask export.

Please contact Photon Design if you are interested in this feature.