X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=packages%2Fufqfpn48.5c;h=082bfd0dc667a9a5712596c72d70d24a126369e8;hb=575c88736837b769d00fdaf3130ab0ca4b95d387;hp=8657dd02b3e46d2dfb356f6c0dfb95ed0da7309f;hpb=6322267e6ef85170790d4147586d5273a5179ce6;p=hw%2Ftelegps diff --git a/packages/ufqfpn48.5c b/packages/ufqfpn48.5c index 8657dd0..082bfd0 100644 --- a/packages/ufqfpn48.5c +++ b/packages/ufqfpn48.5c @@ -21,6 +21,7 @@ import Footprint; real pad_width = 0.55; real pad_height = 0.30; real pad_spacing = 0.50; +real pad_clearance = 8 / 1000 * 25.4; /* 2 mil gap for solder mask */ real pad_x_off = 6.20 / 2; real pad_y_off = 6.20 / 2; @@ -61,42 +62,83 @@ line(-package_width/2 + dot_off, -package_height/2 + dot_off, for (pad = 0; pad < num_pad; pad++) { /* left side (1-12) */ - pad_mm(-pad_x_off - pad_width / 2, - pad_off(pad), - pad_width, - pad_height, - sprintf("%d", pad + 1), - sprintf("%d", pad + 1)); + pad_mm_clear(-pad_x_off - pad_width / 2, + pad_off(pad), + pad_width, + pad_height, + pad_clearance, + sprintf("%d", pad + 1), + sprintf("%d", pad + 1)); /* bottom (13-24) */ - pad_mm(pad_off(pad), - pad_y_off + pad_width / 2, - pad_height, - pad_width, - sprintf("%d", pad + 13), - sprintf("%d", pad + 13)); + pad_mm_clear(pad_off(pad), + pad_y_off + pad_width / 2, + pad_height, + pad_width, + pad_clearance, + sprintf("%d", pad + 13), + sprintf("%d", pad + 13)); /* right side (25-36) */ - pad_mm(pad_x_off + pad_width / 2, - -pad_off(pad), - pad_width, - pad_height, - sprintf("%d", pad + 25), - sprintf("%d", pad + 25)); + pad_mm_clear(pad_x_off + pad_width / 2, + -pad_off(pad), + pad_width, + pad_height, + pad_clearance, + sprintf("%d", pad + 25), + sprintf("%d", pad + 25)); /* top (37-48) */ - pad_mm(-pad_off(pad), - -pad_y_off - pad_width / 2, - pad_height, - pad_width, - sprintf("%d", pad + 37), - sprintf("%d", pad + 37)); + pad_mm_clear(-pad_off(pad), + -pad_y_off - pad_width / 2, + pad_height, + pad_width, + pad_clearance, + sprintf("%d", pad + 37), + sprintf("%d", pad + 37)); } -pad_mm(0, 0, center_width, center_height, "GND", "GND"); +int pad_blocks = 3; + +real block_width = center_width / pad_blocks; +real block_height = center_height / pad_blocks; + +real block_x(int x) = (x - (pad_blocks - 1)/2) * block_width; +real block_y(int y) = (y - (pad_blocks - 1)/2) * block_height; + +bool via_block(int x, int y) { + return (x & 1) == 0 && (y & 1) == 0; +} + +real via_hole = 15/1000 * 25.4; /* 15 mil drill */ +real via_copper = 3.5/1000 * 25.4; /* 7 mil anulus */ + +for (int pad_y = 0; pad_y < pad_blocks; pad_y++) { + for (int pad_x = 0; pad_x < pad_blocks; pad_x++) + if (via_block(pad_x, pad_y)) { + pin_mm_clear_mask(block_x(pad_x), block_y(pad_y), + via_hole, via_copper * 2, pad_clearance, 0, + "GND", "GND"); + pad_mm_clear_mask_options(block_x(pad_x), block_y(pad_y), + block_width, block_height, + pad_clearance, 0, + "GND", "GND","nopaste"); + } else { + /* full square of metal */ + pad_mm_clear_options(block_x(pad_x), block_y(pad_y), + block_width, block_height, + 0, + "GND", "GND","nopaste"); + /* 1/4 full of solder paste */ + pad_mm_clear_options(block_x(pad_x), block_y(pad_y), + block_width/2, block_height/2, + 0, + "GND", "GND",""); + } +} element_end();