Index: parametric_lht/qf.awk =================================================================== --- parametric_lht/qf.awk (revision 27189) +++ parametric_lht/qf.awk (revision 27190) @@ -140,8 +140,8 @@ x = (-cx + n) * pad_spacing y1 = -y_spacing/2 y2 = y_spacing/2 - subc_pstk(proto, x, y1, 90, pinnum(nx*2+ny*2-n+1)) - subc_pstk(proto, x, y2, 270, pinnum(n+ny)) + subc_pstk(proto, x, y1, 270, pinnum(nx*2+ny*2-n+1)) + subc_pstk(proto, x, y2, 90, pinnum(n+ny)) } @@ -171,7 +171,7 @@ silkmark(P["silkmark"], -width/2 - wx/2, -height/2+wy*1.5, (wx+wy)/4) } else if (bodysilk == "full") { - subc_rectange("top-silk", -width/2, -height/2, width/2, height/2) + subc_rectangle("top-silk", -width/2, -height/2, width/2, height/2) silkmark(P["silkmark"], -width/2 + wx*3, -height/2+wy*3, (wx+wy)/2) } else if (bodysilk == "plcc") { Index: parametric_lht/qfp.awk =================================================================== --- parametric_lht/qfp.awk (nonexistent) +++ parametric_lht/qfp.awk (revision 27190) @@ -0,0 +1,52 @@ +function parri(A ,s,i) +{ + for(i in A) + s = s " " i + return s +} + +BEGIN { + help_auto() + PT["0.8"] = "0.55mm" + PT["0.65"] = "0.35mm" + PT["0.5"] = "0.3mm" + PT["0.4"] = "0.2mm" + + proc_args(P, "pins,size,pitch,cpad_size,pad_thickness", "pins,size,pitch") + + pitch = P["pitch"] + sub("0*$", "", pitch) + + if (!(args ~ "pad_thickness=")) { + if (!(pitch in PT)) + error("Unknown pitch, should be one of:" parri(PT)) + pt = PT[pitch] + } + else + pt = rev_mm(DEFAULT["pad_thickness"]) "mm" + + split(P["size"], S, "x") + if (S[2] == "") + S[2] = S[1] + if (S[1] != S[2]) + error("need n*n size") + + pins = int(P["pins"]) + if (pins / 4 != int(pins / 4)) + error("number of pins must be divisible by 4") + + pins=pins/4 + + args = args ",width=" S[1] " mm,height=" S[2] " mm" + + S[1] += 1.45 + S[2] += 1.45 + args = args ",nx=" pins ",ny=" pins ",x_spacing=" S[1] "mm,y_spacing=" S[2] "mm,pad_spacing=" pitch "mm,pad_thickness=" pt "mm" + + + if (P["cpad_size"] != "") + args = args ",cpad_width=" P["cpad_size"] "mm,cpad_height=" P["cpad_size"] "mm" + + args = args ",int_bloat=0.5mm,ext_bloat=1.1mm" + args = args ",?bodysilk=full,?silkmark=circle" +} Index: parametric_lht/qfp_lht =================================================================== --- parametric_lht/qfp_lht (nonexistent) +++ parametric_lht/qfp_lht (revision 27190) @@ -0,0 +1,24 @@ +#!/bin/sh + +# Reference: Microchip Packaging Specification DS00000049BX (en012702.pdf), SSOP + +#@@example qfp(32,7x7,0.8) + +#@@purpose Generate QFP packages +#@@desc Generate QFP packages - a simplified frontend to qf() - +#@@desc look up 3..4 data in the datasheet and get a regular QFP footprint! +#@@desc NOTE: some of the qf() parameters can be also used. +#@@desc Should work for QFP, TQFP, LQFP, etc. + +#@@params pins,size,pitch,cpad_size + +#@@param:pins total number of pins (leads); must be divisible by 4 +#@@param:size a single integer N or NxN or NxNxH; body dimension (width or height of the plastic body) in mm +#@@param:pitch lead pitch (distance between the centerline of two adjacent leads), in mm; must be one of 0.4, 0.5, 0.65 + +#@@param:cpad_size width (and height) of the central pad, in mm +#@@optional:cpad_size +#@@default:cpad_size empty, there's no central pad + +awk -f `dirname $0`/common.awk -f `dirname $0`/qfp.awk -f `dirname $0`/qf.awk -v "args=$*" -v gen=`basename $0` -v "genfull=$0" + Property changes on: parametric_lht/qfp_lht ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property