procedure( seriesRESISTOR(res1 res2)
let( ((r1 paramToFloat((res1->r || res1->R) res1->m t)) (r2 paramToFloat((res2->r || res2->R) res2->m t)))
when( and(r1 r2)
list(nil 'r r1+r2)
)
))
procedure( compareRESISTOR(res1 res2)
let( ((r1 paramToFloat((res1->r || res1->R) res1->m t)) (r2 paramToFloat((res2->r || res2->R) res2->m t)) (precision 0.05))
cond(
( and(r1 r2)
when( abs(1-r1/r2)>precision
sprintf(nil "Resistance mismatch (L:%L S:%L)." r1 r2)
)
)
( and(!r1 !r2) nil)
( and(r1 !r2) "No resistance in schematic view.")
( and(!r1 r2) "No resistance in layout view.")
)
))
procedure( seriesRES(res1 res2)
let( ( (l1 paramToFloat(res1->l res1->s)) (l2 paramToFloat(res2->l res2->s))
(w1 paramToFloat(res1->w (res1->m || res1->M))) (w2 paramToFloat(res2->w (res2->m || res2->M)))
(eqRes '(nil (m || M) 1))
)
when( and(w1 w2)
eqRes->w=min(w1 w2)
when( and(l1 l2)
eqRes->l=(l1/w1+l2/w2)*eqRes->w
)
)
eqRes
))
procedure( compareRES(res1 res2)
let( ( (l1 paramToFloat(res1->l res1->s)) (l2 paramToFloat(res2->l res2->s))
(w1 paramToFloat(res1->w (res1->m || res1->M))) (w2 paramToFloat(res2->w (res2->m || res2->M)))
(precision 0.05)
)
cond(
( and(and(w1 l1) and(w2 l2))
when( or(abs(1-w1*l2/(w2*l1))>precision abs(1-w1/w2)>precision)
sprintf(nil "Resistance sizes mismatch (L:%L/%L S:%L/%L)." l1 w1 l2 w2)
)
)
( and(and(!w1 !l1) and(!w2 !l2)) nil)
( and(and(w1 l1) !and(w2 l2)) "No resistance sizes in schematic view.")
( and(!and(w1 l1) and(w2 l2)) "No resistance sizes in layout view.")
)
))