next up previous contents index
Next: Electrical Mode Properties Up: Cell, Instance, and Object Previous: Physical Mode Properties   Contents   Index


Pseudo-Properties

Xic supports ``pseudo-properties'' which when applied are not saved as properties, but rather change or return some parameter related to the object. This allows the property setting mechanism to be used to alter the physical layout, which can be an important feature in design automation.

In physical mode, when the Property Editor is in use, the listing will include the available pseudo-properties for the current object. The pseudo-properties can be ``added'' or ``edited'' to modify the current object (or all objects if in global mode). As usual, such changes can be undone/redone with the standard operations.

Internally, pseudo-properties can be applied to any object, electrical or physical. Many of the script functions that modify objects use the pseudo-property mechanism internally. These functions can take electrical or physical input. The graphical user interface, though, allows pseudo-properties to be applied in physical mode only, through the Property Editor.

The pseudo-properties are listed below, giving the property number and an internal name for the pseudo-property.

7200: XprpType
This value can be read from all objects. The returned property string consists of a single character: b, p, w, l, or c for boxes, polygons, wires, labels, or subcells respectively. The returned value indicates the type of object.

7201: XprpBB
This value can be read from all objects, and can be applied to boxes, polygons, wires, and labels. The property string is in the form left,bottom right,top where the left, etc. are the coordinates of the object's bounding box in internal units. The x and y values are separated by commas. When this property is applied to an object other than a subcell, the object's geometry is stretched to conform to the bounding box given.

7202: XprpLayer
This value can be read from all objects, and can be applied to boxes, polygons, wires, and labels. The property string is the name of the layer on which the object is defined. For subcells, the returned name is ``$$'', which is the internal name for the layer on which subcells are defined. When this property is given to an object (not a subcell), and if the name is found in the layer table, the object will be moved to the given layer.

7203: XprpFlags
This value can be read from all objects, and can be applied to all objects. The property string is a list of values and keywords corresponding to special flags associated with the object. These flags are set internally, and should not be set by the general user.

7204: XprpState
This value can be read from all objects, and can be applied to all objects. The property string contains one of the keywords normal, selected, deleted, incomplete, and internal. This indicates a state value for the object which is used internally. These values should not be set by the general user.

7205: XprpGroup
This value can be read from all objects, and can be applied to all objects. The property string is an integer corresponding to the conductor group assigned to the object by the extraction system. Though all objects have this data field, it has relevance to objects that are defined on conducting layers only. It is generally unwise for the user to set this value.

7206: XprpCoords
This value can be read from all objects, and can be applied to boxes, polygons, wires, and labels. The property string is a list of coordinates, one for each vertex, with the x and y values separated by a comma. Line feeds are included in returned strings to keep the line length below 80 characters. The values are in internal units. For boxes, labels, and subcells, the coordinates are those of the bounding box. For polygons and wires, the coordinates are the actual vertices. For all but wires, the first and last coordinates are the same, i.e., the path is closed. For boxes and polygons, applying this property will change the object geometry. If the new geometry is a Manhattan rectangle, the new figure will be a box, otherwise it will be a polygon. When applied to wires, the new object will always be a wire, but with the new path. The coordinates given to a label must describe a Manhattan rectangle, and the label will be stretched to fill the given rectangle, as with applying XprpBB.

7207: XprpMagn
This value can be read from all objects, and can be applied to all objects. The return value is ``1.000000'' for objects other than cell instances, and the magnification value for cell instances. When applied to an object or cell instance, the size of the object will change, and a ``reference point'' of the object will remain in a fixed location.

object reference point
box lower-left corner
polygon first vertex in internal list
wire first vertex in internal list
label label reference point
instance transformed master origin

7208: XprpWwidth
This value can be read from wires, and can be applied to wires. The property string is the width of the wire in internal units. When applied to a wire, the width will take the new value. This has no effect when applied to objects other than wires.

7209: XprpWstyle
This value can be read from and applied to wires. When the property string is read, only the first character is significant, the rest if any are ignored. This is used to set the end style of the wire to one of three possible states: flush, rounded, or extended. In Xic, both wire ends will have the same style. If flush, the wire is truncated normal to the edges at the end vertices. If rounded, the wire continues beyond the vertex by half the wire width, but is given a rounded (ideally semicircular) shape (this style is rarely used and is not recommended). The extended style is similar in that the wire extends a half-width past the vertices, but the end is square. This is the Xic default.

leading character style
f,F, or 0 (zero) flush
r,R, or 1 (one) rounded
e,E, or 2 extended

Applying this property to a wire will cause that wire to be rendered with the given end style. The property has no effect if given to objects other than wires.

7210: XprpText
This value can be read from labels, and can be applied to labels. The return value is the text of the label. The full text including encoded hypertext entries is provided. When applied to a label, the label takes the new text. There is no effect if this property is applied to objects other than labels.

7211: XprpXform
This value can be read from and applied to text labels. It controls a set of flags associated with the label which define the presentation attributes.

The general syntax for the string value is

[+|-] [0x]hex|word[,...]

Optionally, the string begins with a + or - character. If + appears, it indicates that the flag bits that are specified will be set, and those not specified will be unchanged. If - is given, the flag bits specified will be unset, those not specified will be unchanged. If neither, the flags will be set to a new value consisting of the bits specified which are set, other bits are not set.

The remaining part of the string effectively specifies a set of flag bits. This consists of space or comma-separated keywords or hex integers. Hex integers can have an optional ``0x'' or ``0X'' prefix. The overall value is the OR of all terms given. The table below lists the accepted keywords and the equivalent flag bits. Keyword recognition is case-insensitive.

Word Hex Bits Description
R0 0 no rotation (dummy token)
R45 10 45 degree rotation
R90 1 90 degree rotation
R135 11 135 degree rotation
R180 2 180 degree rotation
R225 12 225 degree rotation
R270 3 270 degree rotation
R315 13 315 degree rotation
MY 4 mirror Y after rotation
MX 8 mirror X after rotation and mirror Y
HJL 0 left justify (dummy token)
HJC 20 center X justify
HJR 40 right justify
VJB 0 bottom justify (dummy token)
VJC 80 center Y justify
VJT 100 top justify
T0 0 text font 0 (dummy)
T1 200 text font 1 (unused)
T2 400 text font 2 (unused)
T3 600 text font 3 (unused)
SHOW 1000 show hidden label
HIDE 2000 hide label
TLEN 4000 show in top-level only
LIML 8000 limit lines

The HJR will override HJC if both are given, similarly VJT will override VJC.

The SHOW/HIDE bits are for implementing a clickable text display, where the label text can be shown or ``hidden'' by rendering a small glyph instead. At most one of these bits should be set. Either bit overrides the default which is in force when neither is set. These can be applied to any label, however the ``clickability'' of the label is set by the LabelHiddenMode variable. All labels are ``clickable'' by default, press Shift and click on the label to toggle the hidden/viewing status.

The TLEV bit gives the label the property of being invisible in instances of the containing cell, but visible when the cell is viewed as the top-level (current cell).

The LIML bit causes the label to limit the number of lines displayed, when the label text has multiple lines. The maximum line count defaults to 5, and is otherwise given with the LabelMaxLines variable.

The TLEV and LIML bits may be applied when reading schematic cells through OpenAccess for Virtuoso compatibility, but are not otherwise used in Xic, except as controlled through this pseudo-property.

When applied to a label, the label will be rendered using the new flags. This property has no effect when applied to objects other than labels.

7212: XprpArray
This value can be read from subcell instances, and can be applied to subcell instances. The property string is of the form ``nx,ny dx,dy'' where nx and ny are the number of columns and rows, and the dx and dy are the center to center spacings in internal units, for an array of subcells. When applied to an instance, the array parameters of the instance are correspondingly changed. This property has no effect on objects other than subcells.

7213: XprpTransf
This value can be read from subcell instances, and can be applied to subcell instances. The property string is the CIF transformation string for the instance, with coordinates in internal units. When applied to an instance, the instance placement and orientation change to reflect the new transformation. This property has no effect on objects other than subcells.

7214: XprpName
This value can be read from subcell instances, and can be applied to subcell instances. The property string is the name of the instantiated cell. If this property is set, the instance is replaced by an instance of the given cell name. The current transform is added to the existing transform when the new instance is placed. This property has no effect on objects other than subcells.

7215: XprpXY
This pseudo-property has a value that is an x,y coordinate, and can be read from or applied to any object or subcell. The interpretation of this coordinate depends on the type of object. For boxes, it is the lower-left corner. For polygons and wires, it is the first vertex in the vertex list. For labels, it is the text anchor point, and for subcells it is the placement coordinate. Setting the property is equivalent to moving the object.

7216: XprpWidth
This pseudo-property returns the width of any object or cell instance in internal units. It can be applied to objects but not cell instances, and will scale the object to the specified width.

7217: XprpHeight
This pseudo-property returns the height of any object or cell instance in internal units. It can be applied to objects but not cell instances, and will scale the object to the specified height.

The settable pseudo-properties for an object are listed in the Property Editor, along with the ``real'' properties. These can be changed in the same way, which will produce physical changes to the object.


next up previous contents index
Next: Electrical Mode Properties Up: Cell, Instance, and Object Previous: Physical Mode Properties   Contents   Index
Stephen R. Whiteley 2022-05-28