Index: pcblib/parametric/plcc =================================================================== --- pcblib/parametric/plcc (nonexistent) +++ pcblib/parametric/plcc (revision 763) @@ -0,0 +1,24 @@ +#!/bin/sh + +#@@example plcc(32,7x7,0.8) + +#@@purpose Generate PLCC packages +#@@desc Generate PLCC packages - a simplified frontend to qf() - +#@@desc look up 3..4 data in the datasheet and get a regular PLCC footprint! +#@@desc NOTE: some of the qf() parameters can be also used. + +#@@params:pins,size,pitch,cpad_size + +#@@param:pin total number of pins (leads); must be divisible by 4 +#@@param:size a single integer N or NxN or NxNxH; outmost dimensions (width or height of the package, leads included) in mil + +#@@param:pitch lead pitch (distance between the centerline of two adjacent leads), in mil; must be one of 0.4, 0.5, 0.65 +#@@optional:pitch +#@@default:pitch 50mil + +#@@param:cpad_size width (and height) of the central pad, in mil +#@@optional:cpad_size +#@@default:cpad_size empty, there's no central pad + +awk -f `dirname $0`/common.awk -f `dirname $0`/plcc.awk -f `dirname $0`/qf.awk -v "args=$*" -v gen=`basename $0` + Property changes on: pcblib/parametric/plcc ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: pcblib/parametric/plcc.awk =================================================================== --- pcblib/parametric/plcc.awk (nonexistent) +++ pcblib/parametric/plcc.awk (revision 763) @@ -0,0 +1,52 @@ +function parri(A ,s,i) +{ + for(i in A) + s = s " " i + return s +} + +BEGIN { + + PT["50"] = "26mil" + set_arg(P, "?pitch", "50") + + proc_args(P, "pins,size,pitch,cpad_size,pad_thickness", "pins,size") + + pitch = P["pitch"] + sub("[.]0*$", "", pitch) + + if (!(args ~ "pad_thickness=")) { + if (!(pitch in PT)) + error("Unkown pitch (" pitch "), should be one of:" parri(PT)) + pt = PT[pitch] + } + else + pt = rev_mil(DEFAULT["pad_thickness"]) + + 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 + + S[1] -= 60 + S[2] -= 60 + args = args ",nx=" pins ",ny=" pins ",x_spacing=" S[1] "mil,y_spacing=" S[2] "mil,pad_spacing=" pitch "mil,pad_thickness=" pt "mil" + + args = args ",width=" S[1]-150 " mil,height=" S[2]-150 " mil" + + + if (P["cpad_size"] != "") + args = args ",cpad_width=" P["cpad_size"] "mil,cpad_height=" P["cpad_size"] "mil" + + args = args ",int_bloat=47mil,ext_bloat=47mil" + args = args ",?bodysilk=plcc,?silkmark=circle,pinoffs=" int(pins/2+0.5) + + +} Index: pcblib/parametric/qfp.awk =================================================================== --- pcblib/parametric/qfp.awk (revision 762) +++ pcblib/parametric/qfp.awk (revision 763) @@ -48,5 +48,5 @@ 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 ",?fullrect=1,?silkmark=circle" + args = args ",?bodysilk=full,?silkmark=circle" }