antenna_ratio¶
Net-aware. The classic plasma-induced-gate-damage antenna 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 antenna ratio is accumulated cumulatively
up the interconnect stack: at each metal/via level, the net is “connectivity through all
layers up to and including 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 antenna-area numerator is that level’s own conductor area on the net. The
ratio for a gate is the sum, across all levels, of (this level’s conductor area on the
net) / (this level’s gate area on the net) — not a single final-level snapshot. Because
the cumulative sum is monotonic as the stack is walked, flagging only the final
accumulated ratio is equivalent to KLayout flagging a violation at any intermediate
level.
A gate’s net optionally carries a protection diode — a diffusion diode tied to the
same net, above a fixed 0.16 µm² floor (the antenna-protection-diode sizing threshold,
matching gate_connected_min_area’s Ant.g). require_diode selects which
population a rule instance checks:
require_diode: 0— nets without a diode, checked against the strict limit.require_diode: 1— nets with a diode, checked against a much more relaxed limit (a diode bleeds off charge, so a protected net tolerates far more antenna area).omitted — every net is checked, diode or not.
A fixed connectivity level (level) can be given instead of the per-antenna-layer
cumulative level — used for pre-metal checks (Ant.a/Ant.c) where the “antenna” is
itself a derived, non-metal layer (poly over field oxide, or the contact count) rather
than a step in the metal/via stack.
Layers¶
Positional: [gate, antenna conductors…, diode].
Position |
Role |
|---|---|
0 |
The gate layer (device channel poly, e.g. |
1 .. antenna_layers |
The antenna conductor(s) — one entry per interconnect level being accumulated
( |
last (optional) |
The protection-diode marker layer (e.g. |
antenna_layers (see below) says how many trailing entries after the gate are antenna
conductors; anything left over is the diode layer.
Parameters¶
antenna_layersHow many layers after the gate are antenna conductors (default: all remaining layers, i.e. no diode layer).
gate_net_layer/gate_net_layer_dtRaw GDS layer/datatype (not a layer name) that a gate region’s net is resolved through — a gate sits on the poly layer, e.g.
5forGatPoly. Defaults to the gate layer itself.antenna_net_layer/antenna_net_layer_dtRaw GDS layer/datatype an antenna region’s net is resolved through, when the antenna layer is itself a derived layer not present in the connect graph (e.g. poly-over-field resolved through
GatPoly). Defaults to the antenna layer itself — the common case, since a metal/via/contact layer is a connect-graph member.diode_net_layer/diode_net_layer_dtRaw GDS layer/datatype the diode marker’s net is resolved through (a diode sits on diffusion, e.g.
1forActiv). No diode-presence test is done if omitted.require_diode0= only nets without a protection diode;1= only nets with one; omitted = every net. Diode presence is decided once, on the full net (not per level): at least 0.16 µm² of diode-marker area electrically tied to the gate.levelFix the connectivity level (a prefix index into the PDK’s ordered connect-step list) instead of using each antenna layer’s own step in the stack. Used when the “antenna” is a pre-metal / non-stack-level layer (e.g. contact count, or poly over field oxide).
Violation markers¶
One point marker per gate region whose cumulative ratio reaches value, at the gate
region’s centroid, reporting the accumulated ratio, the gate area, and whether a
protection diode was found on the net.
KLayout equivalent¶
The area-ratio accumulation KLayout’s antenna DRC function performs per net per
level; here the levels are walked explicitly (one connectivity partition per antenna
layer) rather than through a single built-in operator.
Example¶
Pre-metal ratio (poly over field oxide), fixed at the contact connectivity level:
- id: Ant.a
check: antenna_ratio
layers: [GatPolyOverActiv, AntPolyField]
value: 200.0
params:
antenna_layers: 1
gate_net_layer: 5
antenna_net_layer: 5
level: 2
Cumulative metal-stack ratio, strict limit for nets with no protection diode:
- id: Ant.b
check: antenna_ratio
layers: [GatPolyOverActiv, Metal1, Metal2, Metal3, Metal4, Metal5, TopMetal1, TopMetal2, AntDiode]
value: 200.0
params:
antenna_layers: 7
gate_net_layer: 5
diode_net_layer: 1
require_diode: 0
Same conductors, relaxed limit for nets that do carry a protection diode:
- id: Ant.e
check: antenna_ratio
layers: [GatPolyOverActiv, Metal1, Metal2, Metal3, Metal4, Metal5, TopMetal1, TopMetal2, AntDiode]
value: 20000.0
params:
antenna_layers: 7
gate_net_layer: 5
diode_net_layer: 1
require_diode: 1