/* MACHINE-GENERATED ! */ frame pad { set px = (dx*X1+dy*Y1)/2 set py = (dy*X1+dx*Y1)/2 set pin = side*pins/4+i+1 __0: vec @(px, py) __1: vec @(-px, -py) pad "$pin" . __0 __2: vec @(px, -py) __3: vec @(-px, py) } frame side { set pos = i-(pins/4-1)/2 loop i = 0, pins/4-1 __0: vec @(e*pos*dx, e*pos*dy) frame pad . } frame pads { table { side, dx, dy } { 0, 0, -1 } { 1, 1, 0 } { 2, 0, 1 } { 3, -1, 0 } __0: vec @(dy*C1/2, -dx*C2/2) frame side . } frame outline { table { index, dx, dy } { 1, -1, 0 } { 0, 0, -1 } { 0, 1, 0 } { 0, 0, 1 } set cx = (dx*C1+dy*C2)/2 set cy = (dy*C2-dx*C1)/2 set ax = -Y1/2*dx set ay = -Y1/2*dy set bx = -Y1/2*dy set by = Y1/2*dx __0: vec @(cx, cy) w: vec .(ax, ay) line __0 . w __2: vec __0(bx, by) line __0 . w __1: vec .(index*(ax-bx), index*(ay-by)) line __2 . w } package "$name" unit mm table { name, pins, X1, Y1, e, C1, C2, D1, E1 } { "QFP32", 32, 0.45mm, 1.3mm, 0.8mm, 8.45mm, 8.45mm, 7mm, 7mm } { "QFP48", 48, 0.27mm, 1.45mm, 0.5mm, 8.2mm, 8.2mm, 7mm, 7mm } { "QFP64", 64, 0.27mm, 1.45mm, 0.5mm, 11.25mm, 11.25mm, 10mm, 10mm } set w = 5mil frame pads @ frame outline @ measy pad.__1 -> pad.__0 2.5mm meas side.__0 -> side.__0 -1.6mm meas pad.__2 -> pad.__1 -0.5mm meas pad.__1 -> pad.__2 -1.5mm measy side.__0 >> side.__0 3.5mm measy pad.__1 >> pad.__1 4mm measx pads.__0 >> side.__0 -7.5mm measx pad.__0 >> pad.__2 -5mm measy pad.__0 >> pad.__3 3mm measx pad.__3 >> pad.__1 -4mm