Actual Examples of Creating Parameterized Cells

Silvaco’s Expert tool is an extremely powerful layout-editing tool that supports features related to parameterized cells. Parameterized cells, often called P-cells, increase designer productivity by adding enormous flexibility and efficiency to the design process. While standard cells help the designer to avoid repetitive drawing of identical pieces of layout, P-cells extend this functionality to the specific parameters that define the mask geometry. As a result, P-cells assist in the automation of layout design and help speed-up modification through the revision of P-cell parameters instead of wasting valuable resources by repeatedly redrawing the layout geometry.

Some benefits of P-cells are:

  • Cell shape is quickly and easily changed from the top level
  • Analogical cell variations take less time to create
  • DRC and LVS violations when changing cell shape are eliminated
  • P-cells promote the standardization of cell design for re-use and copying
  • Since p-cell variations refer a single master cell, ELD file size is reduced


Figure 1.

 

P-cells are created by writing a xi (Expert Interface) script. xi is an extension of the LISA (Language for Interfacing Silvaco Applications) scripting language that includes commands that execute Expert’s actions. Basic LISA/xi patterns are easily combined to create P-cells. The following are examples of P-cell scripts that can serve as a template for customization.

 

1. Create the Original Design

Writing layout objects from scratch is often a time-consuming process. Expert simplifies this process and reduces the time needed to create scripts. Geometry is easily exported to xi script format by clicking Cell > Export > XI Script.

Take the following steps to create an xi script through exporting shapes:

  1. Create the basic shape.
  2. Click Cell > Export > XI Script to automatically generate the corresponding xi script.
  3. Click Cell > New to create the new parameterized cell.
  4. Paste the corresponding descriptions from the generated XI script.

The following is an example of a generated script:

box -0.2 0 0.4 1.6 /layer = "Poly";

box -1 0.4 2 0.8 /layer = "P-Act";

box -0.8 0.6 0.4 0.4 /layer = "Contact";

box 0.4 0.6 0.4 0.4 /layer = "Contact";

 

2. Stretch Objects

Expert requires a reference dimension in order to stretch objects. Once the object’s size is set as the reference dimension, the stretch length is then definable.

The following example uses a MOS transistor. Adjusting the "length" parameter changes the original gate length (0.4 microns). The "reference dimension" is set as 0.4um so that each object in the MOS transistor stretches to the same dimension. tLength should be set as:

tLength = length - 0.4;

Adding tLength to each line completes the stretching description:

box -0.2 0 0.4 1.6 /layer = "Poly";
box -1 0.4 2 0.8 /layer = "P-Act";
box -0.8 0.6 0.4 0.4 /layer = "Contact";
box 0.4 0.6 0.4 0.4 /layer = "Contact";

--->

tlength = length - 0.4;

box -0.2 0 (0.4 + tLength) 1.6 /layer="Poly";
box -1 0.4 (2 + tLength) 0.8 /layer="P-Act";

box -0.8 0.6 0.4 0.4 /layer="Contact";
box (0.4 + tLength) 0.6 0.4 0.4 /layer="Contact";


Figure 2.

 

Boxes in the "Poly" and "P-Act" layers are by the tLength increment. If the tLength value is smaller than 0.4 microns, the object will shrink. The right-side contact moves to the value of tLength by adding tLength to the coordinate of the BOX position.

 

3. Repetition

The xi LOOP command repeats objects in the P-cell. LOOP requires IF and LEAVE LOOP statements along the loops’ count time.

In this example, the gate width of MOS transistor is controlled by the width parameter.

Assuming a separation of contact of 0.4 microns, the generated number of contact (numCont)is calculated as

numCont = floor(width / 0.8);

The floor() changes the contact number to an integer. The description to create contact is:

tLength = length - 0.4;
box -0.2 0 (0.4 + tLength) 1.6 /layer="Poly";
box -1 0.4 (2 + tLength) 0.8 /layer="P-Act";

box -0.8 0.6 0.4 0.4 /layer="Contact";
box (0.4 + tLength) 0.6 0.4 0.4 /layer="Contact";

--->

tLength = length - 0.4;
tWidth = width - 0.8;
numCont = floor(width / 0.8);

box -0.2 0 (0.4 + tLength) (1.6 + tWidth) /layer = "Poly";
box -1 0.4 (2 + tLength) (0.8 + tWidth) /layer = "P-Act";

i=0;
loop begin

i=i+1;
if(i GTR numCont) then (leave loop);

box -0.8 (0.6 + (i-1) * 0.8) 0.4 0.4
/layer = "Contact";
box (0.4 + tLength) (0.6 + (i-1) * 0.8)0.4 0.4 /layer = "Contact";

end;

 


Figure 3.

 

4. Hierarchical p-cell

Complex parameterized cells are easily created by placing the instances of one p-cell into another. Combining p-cells in the hierarchy simplifies the creation of large macro cells, such as a memory block with peripheral circuits.

The INSTANCE command is used to place parameterized cells:

instance (0) (12) /cell="pmos"
/params=({0.8, 2.4});

The parameters defined in the p-cell’s SEQUENCE variable are set with the /params variable. The variable name can replace a numerical value.

In the following example, an "inverter" cell is implemented and the gate width is changed:

PW = wmag * 1.6;
NW = wmag * 0.8;

tWidth1 = NW - 0.8;
tWidth2 = PW - 1.6;

instance 1.1 (3.1 + tWidth1) /cell = "pmos" /params = ({0.4, PW});
instance 1.1 1.5 /cell = "nmos" /params = ({0.4, NW});

!------ GND line ---------------------
box 0 0 2.2 1.1 /layer = "Metal1";
box 0.2 1.1 0.6 (1.5 + tWidth1) /layer = "Metal1";

!------ VDD line --------------------
box 0 (5.9 + tWidth1 + tWidth2) 2.2 1 /layer = "Metal1";
box 0.2 (3.6 + tWidth1) 0.6 (2.3 + tWidth2) /layer = "Metal1";

!------ Output line ------------------
box 1.4 2 0.6 (3.0 + tWidth1 + tWidth2) /layer = "Metal1";

!------ N-Well ----------------------
box 0 (3.4 + tWidth1) 2.2 (3.6 + tWidth2) /layer = "NWell";

 


Figure 4.

 

Conclusion

In conclusion, P-cells are easily defined by combining several patterns of script. Aggressive use of P-cell features dramatically increases layout efficiency.

Download pdf version of this article