The Symbol Editor is activated when a cellView with viewType 'symbol' is opened. The viewType is set when the cellView is created, for example using the File->New Cell command. The Symbol Editor is used to edit symbol views used in schematics; a symbol is a device such as a mos transistor, logic gate or block.
Use the Symbol editor Create menu commands to create shapes on the device layer to represent the symbol (line, rectangle, polygon, circle, ellipse, arc).
Next, create pins using the Create->Pin menu command. Pins require a name (e.g a mos transistor gate pin may be called 'G'), a use (e.g. SIGNAL, POWER etc) and a direction. A pin shape is automatically created according to the direction - NONE generates a square pin, INPUT, OUTPUT and INOUT create polygonal pins.
Then add device labels using the Create->Label menu command.
Add device properties to the symbol by using the Edit->Properties->Query CellView menu command or 'Q' bindkey to add or modify the symbol's properties.
Lastly a selection rectangle can be added by setting the current layer to 'boundary' in the LSW and creating a rectangle that covers the instance. This will then be used for dynamic highlighting and selection, rather than the instance bounding box (which can be extended due to labels etc).
It is advisable to run the Check->Check CellView command. This will clean up the symbol connectivity by deleting any non-shape nets, deleting non-shape pins and setting any shapes with net info to be pins.
NLP (Net List Property) expressions are used for labels with type NLPLabel, and for the netlister.
An NLP expression is enclosed in square brackets. An NLP label can consist of multiple expressions and other text, which is copied literally. Expressions must be delimited by whitespace, but note that whitespace is allowed inside expressions. To add special characters into an NLP expression, use backquoting. Currently \[ (left square bracket), \] (right square bracket), \s (space) and \n (newline) are supported.
The @ character in an NLP expression indicates the following name will be evaluated as an attribute or property.
@instName evaluates to the name of the instance.
@libName evaluates to the name of the instance library.
@cellName evaluates to the name of the instance cell master.
@viewName evaluates to the name of the instance master view.
@modelName evaluates to the value of the instance master property 'modelName'.
@elementNum evaluates to the number of the instance, if the instance name is of the form <char><digits> (which is the default for instance creation)
@propertyName evaluates to the value of the property 'propertyName' on the instance. If the property is not found on the instance, then the instance master is checked for the property.
An expression can have formatting information about the property. The syntax is [@<propName>:<prefix>%<suffix>:<defaultValue>]. For example [@w:w=%u] with an instance property w of value 1.0 will evaluate to 'w=1.0u'. [@w:w=%u:w=2.2u] with no property w will evaluate to 'w=2.2u'. If a defaultValue is not given then the property will evaluate to a null string.
A linefeed character can be inserted into a NLP label expression using the sequence \n. For example:
If the instance has properties w, l e.g. w=6u l=1u then the resulting display will be:
An expression can have pin information using the '|' character followed by a pin name.
A property with the name NLPDeviceFormat is used to control the schematic netlister. A NLPDeviceFormat property on a symbol is a whitespace delimited sequence:
<string> <expression> <string> <expression>...
<string> is an arbitrary string of zero or more characters. Backquoted characters \n, \[, \] are treated as a newline character and literal [ or ].
<expression> is a NLP expression enclosed in square brackets and can be of the form:
where <pinName> is replaced by the name of the net connecting to the instance pin of an instance of the symbol. If the instance does not have an instance pin, then the expression evaluates to <default>.
as for NLP labels.
For example a nmos device symbol may have a NLPDeviceFormat property of
M[@elementNum] [|D:%] [|G:%] [|S:%] [|B:%:gnd!] [@modelName] [@w:w=%u:w=2.0u] [@l:l=%u:l=0.13u] [@m:m=%]
A nmos extraction PCell may have a NLPDeviceFormat property of
M[@elementNum] [|D:%] [|G:%] [|S:%] [|B:%] [@modelName] [@w:w=%u] [@l:l=%u] [@as:as=%] [@ps:ps=%] [@ad:ad=%] [@pd:pd=%]
Note that for extraction, default values are not useful, as the PCell itself should provide default values.
Copyright © Peardrop Design 2023.