Components are the core part of any schematic. Any further usage of the schematic depends on correct information on the components settings. Any setting can be adjusted with the Edit Component feature in the component dialog. To use it, choose the component before calling this feature. Editing is limited with some library formats like LEL or OpenAccess. Other library formats can be converted within this dialog.

Edit Component

The dialog includes an import button which will allow import settings from Qucs, LTSpice, OpenAccess, ... . Supported library formats for import often do not contain all required information. Missing sections (e.g. layout information) have to be added by hand. The edit component dialog also contains a remove button. That button will remove the component from the library file, the component will stay in memory and can be used in opened schematics.


In the general section the component name, its library prefix for the device name is defined. A user description is also part of the section. That description may also include a hyper link. If it does, Component Info will not open a message box with the description but open the link with a browser.

A component belongs to a library; its name and file path is also listed in this section. To move a component to a different library simple change the name of the library. To use an OpenAccess database set library to the OpenAccess database name with an .oa extension. e.g. myLib.oa will save it to the OpenAccess database myLib.


Here all parameters of the device are listed. In the middle you will find a list of existing parameters. Above the list there are buttons to control the order of the parameter and to add or remove a parameter.

After clicking on one parameter its details are show on the right. Any parameter information can be edited including the parameter name and its type. Four different types are supported:

  • string: a free text, which can freely be entered
  • list: predefined texts, will be shown as a combo box in the parameter dialog
  • integer: an integer number
  • double: a real or floating point number with double precision

A parameter has a default value, which can also be empty. A list parameter includes a list of all possible values.

For any parameter options can be added. Supported options are:

  • info: information shown as a tool tip during the parameter entry
  • callback: a layout or TCL macro which will be executed after changing the parameter. This can be used to perform a range check or to adjust calculated parameters
  • unit: the unit of the parameter. It will be displayed on the right of the parameter entry field
  • edit: if this option is false, the parameter is display only and cannot be changed by the user. It can only be changed by a callback macro
  • display: if this option is false, the parameter is invisible in the parameter dialog
  • parse: if true the parameter will be parse. e.g. an entry of 4*8 will result in a 32 in the schematic
  • parseAsNum: if true this parameter is marked to be a number for further parameter processing
  • multiplier: if true this parameter will be used as muliplier for the component in the layout

Options have to be entered as option-name=option-value with one option per line.


In the symbol part you can see and change the symbol of the component. You can set any sheet in the SchemticEditor not having any components as a new sysmbol or you can open an symbol editor to edit the existing symbol. The symbol must only contain non functional parts and ports. Any used port will be used as a connection port for the edited symbol. If the new symbol is a schematic sheet with components a symbol will be automaticly created from it as a rectangle with all ports used in that sheet.

Beside the symbol itself, the label of the symbol is also defined in this section. The label can be any text. Words starting with a $ will be replaced by the relating parameter. The label position is also defined in this part of the dialog. The position of the label can be defined for different symbol orientations. You can set the label position via the dialog boxes or with a control left mouse click into the symbol display.

Example for a label:

nf=$nf m=$mult

In the layout part of the dialog the layout generation from the component is described. To generate the layout the description is read line by line. As soon a line can be used to generate the layout that resulting layout will be used. Lines starting with a # are comments and will be ignored. There are five ways to describe a layout:


To ignore a component in the LayoutEditor use an ignore section in the layout description. This may be useful for a simulation 'component' or power supplies. Any component fitting the condition will be ignored in the layout.


So this fist example will ignore the component, if the parameter output is equal to X1 or X2. Any other value of output will not be handled in the example and will be processed by following lines of the layout section. To make a condition always true use a *. Like this example to always ignore all components in the layout:



To use a existing cell for the component, list it under the cell section. In the example below the file openCellLibrary/AND3_X2.gds will be imported and the cell AND3_X2 will be used, if the output parameter is equal to X2. If you want to use a cell in the already opened layout, use a . as filename

# device-type                   file            cell
output=X1       openCellLibrary/AND3_X1.gds     AND3_X1
output=X2       openCellLibrary/AND3_X2.gds     AND3_X2
output=X4       openCellLibrary/AND3_X4.gds     AND3_X4


If the package section is used, it will also use a cell for the layout. But this cell will be edited and the cell will be renamed so that the cellname is unique to the used component. The modification of the cell is limited to its text. The text devicename is replaced by the devicename to the component, the type is replaced by the component name, and pinnumber is replaced by portname (or deleted if protname=nc). In this example the text 3 is replace by in+ and the text 1 is removed. This section is very useful for printed circuit boards. You only need a package layout design and can use it for any component with that package.

# part-type     layout-file     cellname [portname pinnumber ] (nc for not connected)
Package=SO8N    pcb/SO8N.gds    SO8N     in+ 3 in- 2 V+ 7 V- 4 out 6 nc 1 nc 5 nc 8
Package=DIP8    pcb/DIP8.gds    DIP8     in+ 3 in- 2 V+ 7 V- 4 out 6 nc 1 nc 5 nc 8


Using the macro section will call a macro to create the layout design. The cell the macro sets as currentCell will be used. For parametric cell macro are special feature avaialable to read the component infos. A complete list for it is here. Additionailly in the macro there will be definitions like NETLIST_PARAMETER, NETLIST_DEVICENAME, NETLIST_PIN1_NAME, so that the macro have full access to all parameters of the component to generate. See some of the shipped library example macros e.g. in ParametricShapeLibrary

# device-type   macro-file              pins
*               pcb/resistor.layout     pin1 pin2

For developing parametric cell macros you can add additional compiler flags to the macro. These will set the default iPar value for the macro, if it is not run as an parametric cell macro.

#parameter step "18.5µm"
#parameterDouble shape "0.5"
#parameterInt vertex 100

int main(){
string step=iPar("step"); //will be "18.5µm" if run outside an parametric cell macro, otherwise the parameter value is returned
int vertex=iPar("vertexes");
double shape=iPar("shape");


With the oa section you can directly use a OpenAccess view for the device.

#condition      lib     cell    view
*               pdk     nmos    layout


With the external section, external software is started to create the layout. The software tool is started with libraryname cellname and viewname as parameter. Further parameters are all parameters of the device in the format parametername=parametervalue.

#condition      lib     cell            view    tool
*               libname cellname  viewname software

The software tool outputs the layout information to the standard output. The format is an ascii text with one line fore each shape. Here an example of the format:

databaseunits 1.000000e-09
box 99 0 1000 1000 1600 1600
polygon 10 0 1000 1000 1200 1000 1000 1200 1000 1000
text 42 0 0 1200 1300 0 PLUS 

If you need more information on the output format to create your own external parametric cell tools, please contact the support.


The previous layout section describes how a layout is created from the component. This section describes the other way round: How the device can be extracted from the layout. Devices placed via a schematic driven layout can always be detected as its component information is stored in the layout as properties of the cell reference. That works even if nothing is described here. This section describes how to extract it without having such information. This can be used for parasitic parameter extraction or for a final design validation after removing all properties with schematic only information.

The section has tree fields:

  • method used for the extraction
  • parameter for the extraction method
  • parameter used for the extracted device

For details like avaiable extraction methods and its parameter please see ExtractionDevice.


In this part of the dialog you can set information to generate a netlist in any netlist format. Even new formats can be added. Each format has two parts: the netlist and the model part. These parts will be included in the netlist by the commands $netlist(format) or $model(format) in the netlist generation setup. The principal difference of the two parts is that in the netlist part, data is added for each component placement in a schematic while in the model part, relavant data is added only once for each type of component. Please see NetlistGeneration for more details on the generation of a netlist or see the examples shipped with the SchematicEditor.