Interactive P-cell Generation

1. Abstract

Parameterized cells (P-cells) significantly increase the productivity of layout designers. Silvaco International’s tool Expert has been designed to aid layout designers through its ability to support and manipulate P-cells based on its LISA script language. This simulation standard will demonstrate the capability of Expert and will identify its inherent benefits to the layout engineer.

In previous versions of Expert layout editor new P-cells could be created only by direct input of the text of the LISA procedure that defines a p-cell, into the special P-cell panel (Figure 1). We shall call this approach “textual P-cell generation”. To simplify writing of LISA scripts, it is possible to draw an instance of an intended P-cell in Expert editor, save it into XI-script format, and then edit the script manually to substitute the actual numeric values by parameters and formulas.


Figure 1. Textual P-cell generation in Expert.

While these approaches are acceptable for small P-cells, it becomes inconvenient with more complex P-cells and when large numbers of P-cells are required, e.g., by developers of cell libraries and PDKs.

Therefore, “interactive parameterized cell generation” is a new feature added into Expert. This feature increases user’s productivity of creating P-cells. It generates a parameterized cell with LISA xi-scripts from a geometric cell based on interactive functions “Stretch”, “Repetition”, and “Layer”. After a P-cell is generated, parameter values can be modified to produce the desired cells.

Rules for P-cell generation are applied to cell objects directly or via user defined control blocks. Several rules can be applied to one object /block as well as one rule can be applied to several objects/blocks. Control blocks can be of any shape (box, region, etc.).

The “Stretch” function is used to stretch or move selected objects in one of the following directions: left, right, up, down, left-up, left-down, right-up, right-down. Objects completely inside Control blocks will move, and partially overlapped by blocks will stretch.

The “Repetition” function is used to repeat the selected objects in the specified direction with specified steps.

The “Layer” function is for the assignment of used layers.

An existing library cell can be used as the base for P-cell generation, or a new cell with base geometry can be created according to the specification.


2. Example of P-channel MOSFET P-cell Generation

P-cell generation of P-channel MOSFET (Figure 2 and Figure 3) is illustrated by the following step-by-step example.

Figure 2. P-cell specification.


Figure 3. Base geometry.

Figure 4. Base geometry with control blocks.


Contact Size 0.4 um
Repetition step for Contact 0.4 um
Spacing between Contact and Poly 0.2 um
Spacing between Contact and P-Act 0.2 um
Extended of Poly for P-Act 0.4 um
Cell Origin Center of Poly Gate


2.1. Implement the gate length and multiple gates

The following steps show the implementation of “length” parameter (Gate length of MOSFET) by the “Stretch” function. Generating multiple gates is one of the applications for adding combined stretching and adding repetition functions.

1) Run Tools >> P-cell generate >> Create Control Blocks

2) Run Edit >> Create Objects >>Box to enter the stretch box.

3) Select the created box and run Tools >>P-cell generate >>Set Rules.

4) Click the “Add Stretch” button and enter the following parameters in the dialog:

Direction : right
Parameter : length + (gates-1) * (length + 0.4) - 0.4
where 0.4 is the default gate length in microns.

5) Select an object in Poly layer and run Tools >> P-cell generate >> Set Rules.

Then click the “Add Repetition” button to enter the following parameters in the dialog:
Direction : right
Column : gates
Delta : length + 0.4

6 ) Run Tools P-Cell generate >> Create Control Blocks, and create a new stretch box enclosing the right side segment of Poly layer then select the created box, and run Tools >> P-Cell generate >> Set Rules, click the “Add Stretch” to enter the following parameters:

Direction : right
Parameter : length - 0.4


2.2. Implement the gate width and contact array

We need to add a few steps for implementation of “width” parameter (Gate width of MOSFET) and the corresponding contact array by “Repetition” function.

1) Create one more control block and run Tools >> P-cell generate >> Set Rules.Then click the “Add Stretch” button and set the following parameter in the dialog:

Direction : up
Parameter : width - 0.8
This “0.8” means that the default gate width.

2) Run Select >> By Click / Drag and select the contacts.

3) Run Tools >> P-cell generate >> Set Rules, click the “Add Repetition”, and set the parameters as follows:

Direction : up
Row : floor (width / 0.8)
Delta : 0.8


2.3. Implement parameterize the layer for diffusion area

In this step we will use the “Layer” function.

1) Select a diffusion area in the layer “P-Act”.

2) Run Tools >> P-cell generate >> Set Rules, and click Add Layer to specify a parameter name “diff_layer”:


2.4. Parameters of P-cell

Run Tools >> P-cell generate >>Parameters, and set the parameters as follows:

length Type = double, Default value = 0.4
width Type = double, Default value = 0.8
diff_layer Type = string, Default value = P-Act
gates Type = integer, Default value = 1


2.5. Generate P-cell

Run Tools >> P-cell generate >> Compile to execute compiling. A new parameterized cell will be created with a suffix “_pcg”. The resulting P-cell will be opened with the corresponding script:


PARAMETER length /TYPE = (Double) /DEFAULT = (0.4)

PARAMETER width /TYPE = (Double) /DEFAULT = (0.8)

PARAMETER diff_layer /TYPE = (String) /DEFAULT = (“P-Act”)

PARAMETER gates /TYPE = (Integer) /DEFAULT = (1)


$$j0 = -1;


$$j0 = $$j0 + 1;

IF ($$j0 GEQ (floor(width / 0.8))) THEN (LEAVE LOOP);

box (-0.8) (-0.2 + $$j0 * (0.8)) (0.4) (0.4) /layer = “Contact”;


$$j1 = -1;


$$j1 = $$j1 + 1;

IF ($$j1 GEQ (floor(width / 0.8))) THEN (LEAVE LOOP);

box (0.4 + (length + (gates - 1) * (length + 0.4) - 0.4))

(-0.2 + $$j1 * (0.8)) (0.4) (0.4) /layer = “Contact”;


$$i2 = -1;


$$i2 = $$i2 + 1;

IF ($$i2 GEQ (gates)) THEN (LEAVE LOOP);

box (-0.2 + $$i2 * (length + 0.4)) (-0.8)

(0.4 + (length - 0.4)) (1.6 + (width - 0.8)) /layer = “Poly”;


box (-1) (-0.4) (2 + (length + (gates - 1) * (length + 0.4) - 0.4))

(0.8 + (width - 0.8)) /layer = (diff_layer);



Now we can create several instances of the resultant P-cell with various parameter values (Figure 5).

Figure 5. Instances of resultant P-cell.


3. Conclusion

The benefit of interactive P-cell generation is the increase of the user’s productivity for P-cell libraries creation. Once P-cells are generated, they can be simply modified to become the required cells. This feature delivers the power of P-cells without spending much time creating and modifying P-cells manually.

Download pdf version of this article