antenna_ratio¶
Net-aware. The classic plasma-induced gate-damage check: the conductor area electrically tied to a gate, divided by that gate’s area, must stay under a limit — too much exposed conductor collects charge during plasma processing and can punch through the thin gate oxide before the device is finished and protected by a diode.
Semantics¶
Mirrors IHP’s reference antenna.drc. The ratio is accumulated cumulatively up the
interconnect stack: at each metal or via level the net is the connectivity through all
connect steps up to that level (see Architecture’s net-extraction section), so
the gate-area denominator grows as higher layers merge separate gates onto one net, and
the numerator is that level’s own conductor area on the net. A gate’s ratio is the sum
over the levels of (this level’s conductor area on the net) / (this level’s gate area
on the net). The sum is monotonic as the stack is walked, so flagging the final sum is
what KLayout flagging a violation at any level comes to. A ratio over value is a
violation; one at the value meets the maximum, as every rule of a manual is met at its
value (IHP’s own deck reads its cumulative rules as >= and its per-level ones as
>).
A gate’s net optionally carries a protection diode — a diffusion diode tied to the
same net, of at least the size the diode rule asks for (diode_area, 0.16 µm² by
default, Ant.g’s floor; a diode that meets that rule is a protection diode). Whether it
is tied is read at each level, on that level’s net (the diode parameter below); IHP’s
deck reads the final net, which lets a diode reached only through Metal2 stand for a
Metal1 antenna. diode: without checks the nets
without one against the strict limit, diode: with the nets with one against the
relaxed limit; without the param every net is checked.
GF180’s model differs in two ways, both off unless asked for: metric: sidewall
measures a metal by its perimeter times thickness rather than its plan area, and
diode_factor credits a diode by adding that many times its area to the denominator
instead of switching limits.
Layers¶
The conductors, one per level being accumulated: [Metal1, Metal2, …] for the metal
stack, [Via1, Via2, …] for the vias, or a single pre-metal layer such as poly over
field or the contacts.
Parameters¶
diodeOptional.
withorwithout: which nets the rule is about, by whether a protection diode is tied to them — read on the final net, as IHP’s deck and the sign-off runset read it: a diode the net reaches only through a higher metal puts the whole sum underwith.metricOptional.
area(the default) orsidewall, perimeter timesthickness.thicknessWith
metric: sidewall: the metal’s thickness in µm.diode_factorOptional. Add this many times the diode area on the net to the gate area.
diode_areaOptional, µm². The least diode area that protects a net; 0.16 by default.
Layer params:
gateRequired. The gate layer (the channel poly, e.g.
GatPolyOverActiv).gate_net_ofThe conductor a gate’s net is looked up on — a gate sits on poly, which the channel marker is not. Defaults to
gate.diode_1,diode_2,diode_3The protection-diode marker layers, and
diode_1_net_of,diode_2_net_of,diode_3_net_ofthe conductor each is looked up on (a diode sits on diffusion). GF180 names an n-diode, a p-diode and the well.antenna_net_ofThe conductor a conductor’s own net is looked up on, when the conductor is a derived layer that is in no connect step (poly over field, looked up on poly). Defaults to the conductor itself, which a metal, via or contact is.
level/level_beforeRead every conductor at one level instead of each at its own step: through the first connect step of the
levellayer, or short of that of thelevel_beforelayer. IHP’s Ant.a and Ant.c read the pre-metal net aslevel: Activ; GF180 reads a via3 antenna before metal4 connects aslevel_before: metal4_drawn, and the poly antenna alone aslevel_before: poly2_drawn. Naming the layer, not the step’s number, means a step added to the connect list moves no rule.
Violation markers¶
One point marker per gate region whose cumulative ratio reaches value, at the gate
region’s marker, reporting the ratio, the gate area and whether a diode was found.
KLayout equivalent¶
KLayout’s antenna_check, one call per level; here the levels are walked explicitly,
one connectivity partition per conductor.
Examples¶
- id: Ant.a
check: antenna_ratio
layers: [AntPolyField]
value: 200.0
layer_params:
gate: GatPolyOverActiv
gate_net_of: GatPoly
antenna_net_of: GatPoly
level: Activ
- id: Ant.b
check: antenna_ratio
layers: [Metal1, Metal2, Metal3, Metal4, Metal5, TopMetal1, TopMetal2]
value: 200.0
params:
diode: without
layer_params:
gate: GatPolyOverActiv
gate_net_of: GatPoly
diode_1: AntDiode
diode_1_net_of: Activ
- id: ANT.16_i_ANT.2
check: antenna_ratio
layers: [metal1_drawn]
value: 400.0
params:
metric: sidewall
thickness: 0.54
diode_factor: 2
layer_params:
gate: nom_gate
gate_net_of: poly2_drawn
diode_1: n_diode
diode_1_net_of: ncomp_con
diode_2: p_diode
diode_2_net_of: pcomp_con
diode_3: nwell
level: metal1_drawn