Фрагмент файла правил для проверки на lvs (Calibre)
//===============================================================================//
//========= Transistor Device Statements and Trace Properties =========//
//===============================================================================//
DEVICE MP(P) Pchannel_thinox Poly_nodev(G) Psd(S) Psd(D) Nwell_nodev(B) <Active>
[
PROPERTY W, L, AS, AD, PS, PD
WEFFECT = WEFFECT_VAR
W = PERIM_CO(Pchannel_thinox,Psd)/2
L = AREA(Pchannel_thinox)/W
IF (BENDS(Pchannel_thinox) > 0) {
IF (W > L) W = W - (WEFFECT*BENDS(Pchannel_thinox)*L)
ELSE L = L - (WEFFECT*BENDS(Pchannel_thinox)*W)
}
W = TRUNC((W*1e+09) + 0.5)/1e+09 // rounding to 0.001um
L = TRUNC((L*1e+09) + 0.5)/1e+09 // rounding to 0.001um
IF (PERIM_IN(S,Active) > 0) {
AS = AREA(S)*(W/PERIM_IN(S,Active))
PS = PERIM(S)*(W/PERIM_IN(S,Active))
}
ELSE {
AS = 0
PS = 0
}
IF (PERIM_IN(D,Active) > 0) {
AD = AREA(D)*(W/PERIM_IN(D,Active))
PD = PERIM(D)*(W/PERIM_IN(D,Active))
}
ELSE {
AD = 0
PD = 0
}
]
Фрагмент файла правил для извлечения паразитов (Calibre)
CAPACITANCE CROSSOVER FRINGE MET3 MET1 INSIDE OF Metal6 MASK
[
PROPERTY C
max_caldistance = 5 // For reference
max_calenclose = 5 // For reference
max_distance = 3
max_enclose = 3
C = 0.0
if ((distance() > 0.0) && (enclose() >= max_enclose)) {
C = length() * 0.0222878 * (1 - exp(-0.365623 * (distance() + 0.350765)))
}
if ((distance() <= 0.0) && (enclose() >= max_enclose)) {
C = length() * 0.0225027
}
if ((distance() > 0.0) && (enclose() < max_enclose) && (enclose() < distance())) {
C = length() * 0.5 * (0.00139635 * (distance()) + 0.0446105) * (0.783334 - exp(-(0.201261 * (distance()) + 0.20167) * (enclose() + 0.176495 * (distance()) + 1.37056) - (-0.00602483 * (distance()) + -0.00986721) * (enclose() + 0.717174 * (distance()) + 3.79569) * (enclose() + 0.717174 * (distance()) + 3.79569)))
}
if ((distance() > 0.0) && (enclose() < max_enclose) && (enclose() >= distance())) {
C = length() * 0.0222878 * (1 - exp(-0.365623 * (distance() + 0.350765)))
}
if ((distance() <= 0.0) && (enclose() < max_enclose)) {
C = length() * 0.0257961 * (0.783334 - exp(-1.20798 * (enclose() + 2.25304) - -0.0399914 * (enclose() + 7.38156) * (enclose() + 7.38156)) + 0.00474412)
}
if (C < 0.0) {
C = 0
}
]
//
// model: 33 target: nearbody profile: field layers: field_base,MET1,Metal4,Metal5
//