Index: trunk/footprint/parametric/bga =================================================================== --- trunk/footprint/parametric/bga (revision 36146) +++ trunk/footprint/parametric/bga (revision 36147) @@ -8,7 +8,7 @@ #@@desc Generate a grid of circular pads for BGA chips -#@@params nx,ny,spacing,balldia,silkmark,map,width,height,automap,automap2 +#@@params nx,ny,spacing,balldia,silkmark,map,width,height,automap,automap2,alphabet,ballmask,ballpaste #@@param:nx number of pins in the X direction #@@optional:nx @@ -24,8 +24,16 @@ #@@param:balldia diameter of a ball #@@dim:balldia -#@@default:spacing 0.35 mm +#@@default:balldia 0.35 mm +#@@param:ballmask diameter of the mask cutout +#@@dim:ballmask +#@@default:ballmask 0.45 mm + +#@@param:ballpaste diameter of the paste circle +#@@dim:ballpaste +#@@default:ballpaste 0.30 mm + #@@include silkmark.help #@@optional:silkmark #@@default:silkmark square Index: trunk/footprint/parametric/bga.awk =================================================================== --- trunk/footprint/parametric/bga.awk (revision 36146) +++ trunk/footprint/parametric/bga.awk (revision 36147) @@ -33,7 +33,7 @@ set_arg(P, "?balldia", "0.35mm") set_arg(P, "?silkmark", "arc") - proc_args(P, "nx,ny,spacing,balldia,silkmark,map,width,height,automap,automap2,alphabet", "") + proc_args(P, "nx,ny,spacing,balldia,silkmark,map,width,height,automap,automap2,alphabet,ballmask,ballpaste", "") step = parse_dim(P["spacing"]) @@ -83,6 +83,17 @@ } balldia = parse_dim(P["balldia"]) + +# safe defaults on ball mask and paste + if (P["ballmask"] == "") + ballmask = balldia * 1.2 + else + ballmask = parse_dim(P["ballmask"]) + if (P["ballpaste"] == "") + ballpaste = balldia * 0.8 + else + ballpaste = parse_dim(P["ballpaste"]) + bw = parse_dim(P["width"]) bh = parse_dim(P["height"]) @@ -96,7 +107,7 @@ subc_begin(nx "*" ny, "U1", 0, -bh) - proto = subc_proto_create_pad_circle(balldia) + proto = subc_proto_create_pad_circle(balldia, ballmask, ballpaste) for(x = 0; x < nx; x++) { for(y = 0; y < ny; y++) {