Antenna Rule Checks in Savage

1. Introduction

Antenna rules is a common name for rules that check ratios of amounts of material in two layers from the same node. They are used to limit the damage of the thin gate oxide during the manufacturing process because of charge accumulation on interconnect layers (metal, polysilicon) on certain fabrication steps.

The name comes from the fact that metal can act as an antenna attracting ions and thus picking up charge during the fabrication process on steps such as plasma etching or ion implantation. This happens when a floating connect layer already connected to gate areas is being fabricated. As a result, the accumulated charge can overstress the thin gate oxide. This leads to the degradation of dielectric breakdown reliability of the device, resulting in degraded performance or even total failure of the device. Antenna effect gets worse in modern technologies, when gate size and thin oxide thickness decrease and at the same time the relative interconnect length increases.

Clearly, antenna rules are based on connectivity information extracted from the layout. This connectivity not necessarily coincides with the one used for LVS netlist extraction. For example, a common way to eliminate antenna effects is to break long interconnects that lead to gates, into segments with safely small area. These segments are then shunted together on subsequent manufacturing steps using short segments of another conductive layer. Therefore antenna checks for each particular interconnect layer necessarily use only partial connectivity information. (Of course, the simplest most conservative approach considers process-induced damage as a cumulative effect, so that one may calculate the total area of poly, metal1, metal2, metal3, ... in a node and relate it to the area of gates connected to this node.)

In a similar way, rules based on relative amounts of material are used to limit the induced capacitance caused by circuit operation, which could degrade device operational characteristics (drive current, transition time).


2. Implementation

To support antenna checks, Savage provides the following commands:

Select ... Stamp, used to transfer connectivity information between overlapping layers

Get_Node_Params, used to calculate specified geometric parameters for shapes in electrical nodes

Check_Node_Params, used to check various constraints for parameters extracted by the preceding Get_Node_Params calls


2.1. Select Operation with Stamp Relation

The command has the following format:

SELECT: Relation = STAMP, [Options = (Touch-),]

Layer1 = <layer1 identifier>,

Layer2 = <layer2 identifier>,

LayerR = <result layer identifier>;

This operation is used to transfer connectivity information from Layer2 to Layer1 shapes, if possible.

If a polygon from Layer1 overlaps some polygon from Layer2 then the Layer1-polygon is labeled with the same node number as the Layer2-polygon and goes to the output LayerR.

If a polygon from Layer1 overlaps Layer2-polygons belonging to different electrical nodes then the Layer1-polygon is disregarded.

If a polygon from Layer1 does not overlap any Layer2-polygon then the Layer1-polygon is also disregarded.

Options = (Touch-) is used to define exactly what polygon "overlap" means. If "Touch-" option is specified, then shapes that only touch each other are not considered as overlapping shapes. If "Touch-" option is absent, then touching of shapes counts as their overlapping.

Note 1: "Select Stamp" operation does not modify the input Layer1; it generates the output LayerR containing merged Layer1-geometries stamped with connectivity information from Layer2.

Note 2: Output layers of "And" and "Dif" Logical operations automatically inherit electrical node information from the first input layer. Therefore using the "Select... Stamp" operation is not necessary for them.


Select: Relation=STAMP, Options=(Touch-),

Layer1=GATE, Layer2=POLY,



2.2. Get_Node_Params

The command has the following format:

Get_Node_Params: Options = (parameter list),

Layer = <layer identifier>,

LayerR = ; <result file identifier>;

This operation is used to extract geometric parameters from input layer Layer for each electrical node and generate the result file specified by LayerR parameter. 'LayerR' parameter is to be used as 'File' input parameter for the Check_Node_Params command.

The 'parameter list' specifies the parameters to extract (Area and Peri (perimeter) parameters are currently supported).


Get_Node_Params: Options=(Area, Peri), Layer=&GATE_STM,



2.3. Check_Node_Params

The command has the following format:

Check_Node_Params: Formula = (expression),

Value= <value1[:value2]> Type=<check type>,

Layer = <layer identifier>,

LayerR = ; <result file identifier>;


The operation checks geometric parameters extracted by the Get_Node_Params command on each electrical node.

Formula specifies the calculation of a value to be checked for each node.

'Expression' is an arithmetic expression constructed using constants, extracted parameter identifiers, +,-,*,/ binary operators, mathematical functions (Savage currently supports acos, asin, atan, soc, cosh, exp, log, log10, min of two values, max of two values, sin, sinh, sqrt, tan, and tanh) and parentheses.

"Extracted parameter identifier" is in the form: Action.File.Parameter.

"File" is the <result file identifier> from the Get_Node_Params operation used to get this parameter.

"Parameter" is the geometric parameter name (it must be included in "parameter list" of the Get_Node_Params command).

"Action" defines the parameter value to be reported for each electrical node (Min, Max, Sum are currently supported).

"Action" and "Parameter" may be omitted. In this case "Sum" is the default "Action" and "Area" is the default "Parameter".

Layer = <layer identifier> specifies the layer from which the shapes to report are selected.

LayerR = <result layer identifier> specifies the output layer. It will contain the shapes from the input layer "Layer" that belong to the nodes for which the value of Formula satisfies the constraints specified by Value and Type.



Formula=(Min.&FPOLY_PRM.Area / Min.&GATE_PRM.Area),

Value=0.25, TYPE=GT, Layer=POLY, LayerR=BAD_POLY;


3. Complete Example

// Define input layers


POLY (5),

CNT (8),

M1 (9),

ACT (21);


// Define remaining basic layers

Substrate: LayerR=&BULK;

And: Layer1=ACT, Layer2=POLY, LayerR=&FETGATE;

Dif: Layer1=ACT, Layer2=&FETGATE, LayerR=&DIFF;

And: Layer1=&DIFF, Layer2=&BULK, LayerR=&DFBL;


// Define layer connect sequence from bottom to top

// This command also indicates that connectivity will be reextracted from this point



// Define connections

CONNECT: layer1 = M1, layer2 = POLY, layerC = CNT;

CONNECT: layer1 = M1, layer2 = &DIFF, layerC = CNT;

CONNECT: layer1 = &DIFF, layer2 = &BULK, layerC = &DFBL;


// Transfer nodal data to gates

Select: Relation=STAMP, Options=(Touch-),

Layer1=&FETGATE, Layer2=POLY,



// Extract gate area per node

Get_Node_Params: Options=(AREA), Layer=&FETGATE_STM,



// Extract M1 area per node

Get_Node_Params: Options=(AREA), Layer=M1,



// Find gates with antenna ratio > 150


Check_Node_Params: Formula=(SUM.M1AREA.Area / SUM.GTAREA.Area),

Layer=POLY, Type=GT, Value=150,


Copy: Layer=&ERM1; // report as violations