Subcircuits can be defined in a circuit by using the following five lines:
use file_name use-id
array xlo xhi xsep ylo yhi ysep
transform a b c d e f
box xbot ybot xtop ytop
The use line defines the file name of the circuit to be used and the instance use-id.
The array line is optional and is used for the case where the cell is actually an array of the cell specified in the use line. xlo and xhi are the indices of the array in the x direction (inclusive). ylo and yhi are the indices of the array in the y direction (inclusive). Each element in the array is separated from the next element in the x direction by xsep and in the y direction by ysep. These integers are in lambda units and are converted to centimicrons using the current lambda setting in Carafe. The array is separated into individual elements when read into Carafe and thus there are no arrays of elements in Carafe.
The timestamp line is optional and is ignored by Carafe.
The transform line defines the transform to be applied to the sub circuit to convert the sub circuit coordinates to the higher level circuit. The six integers specify the parts of the transformation matrix as shown below.
a d 0The last line is the box line which provides the bounding box of the sub circuit being read in.
b e 0
c f 1