# HG changeset patch # User Mychaela Falconia # Date 1594923802 0 # Node ID e90e948e9368df72d6914fdf8279505dfbb43eab # Parent 2da7374372a0e61e49043352c83f5a173b5394de m4-fp: SRAM_TSOPII_44 footprint added diff -r 2da7374372a0 -r e90e948e9368 ifctf-part-lib/m4-fp/common.m4 --- a/ifctf-part-lib/m4-fp/common.m4 Thu Jul 16 18:22:33 2020 +0000 +++ b/ifctf-part-lib/m4-fp/common.m4 Thu Jul 16 18:23:22 2020 +0000 @@ -96,6 +96,7 @@ include(dil.inc) include(dpr.inc) include(geda.inc) +include(gullwing.inc) include(hirose.inc) include(johnstech.inc) include(midcom.inc) diff -r 2da7374372a0 -r e90e948e9368 ifctf-part-lib/m4-fp/gullwing.inc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ifctf-part-lib/m4-fp/gullwing.inc Thu Jul 16 18:23:22 2020 +0000 @@ -0,0 +1,59 @@ +# -*- m4 -*- +# +# Miscellaneous gull wing packages not covered by old geda.inc set + +# 44-lead TSOP II package used by many SRAM ICs +# based on Cypress DOC-11360 "44-TSOP II.pdf" drawing + +define(`PKG_SRAM_TSOPII_44', + ` +Element[0x00 "$1" "$2" "$3" 200000 100000 0 0 0 100 0x00] +( + # distance from centre of part to centre of pad (nm) + define(`pad_ctr', eval(11410800/2)) + # pad thickness + define(`pad_thick', 477000) + # pad thickness plus soldermask expansion + define(`pad_thickmask', eval(pad_thick+150000)) + # movement of aperture to draw each pad + define(`pad_apert_move', eval((1517400-pad_thick)/2)) + # inner and outer X coordinates of each Pad object + define(`pad_inner', eval(pad_ctr-pad_apert_move)) + define(`pad_outer', eval(pad_ctr+pad_apert_move)) + # stupid PCB clearance parameter + define(`clearance', 10mil) + + # left row of pads + define(`Ypos', -8400) + forloop(`i', 1, 22, ` + Pad[-pad_inner`nm' Ypos`um' -pad_outer`nm' Ypos`um' + pad_thick`nm' clearance pad_thickmask`nm' + "" "i" "square"] + define(`Ypos', eval(Ypos+800)) + ') + # right row of pads + define(`Ypos', 8400) + forloop(`i', 23, 44, ` + Pad[pad_inner`nm' Ypos`um' pad_outer`nm' Ypos`um' + pad_thick`nm' clearance pad_thickmask`nm' + "" "i" "square"] + define(`Ypos', eval(Ypos-800)) + ') + + # silk line thickness (nm) + define(`silkW', 150000) + # silk outline X extent (nm) + define(`silkX', eval(pad_outer+(pad_thickmask/2)+(silkW/2))) + # silk outline Y extent (nm) + define(`silkY', eval(18517000/2)) + # arc radius + define(`silk_arc_rad', 0.65mm) + + # draw the silk outline + ElementLine[-silkX`nm' -silkY`nm' -silk_arc_rad -silkY`nm' silkW`nm'] + ElementArc[0 -silkY`nm' silk_arc_rad silk_arc_rad 0 180 silkW`nm'] + ElementLine[silk_arc_rad -silkY`nm' silkX`nm' -silkY`nm' silkW`nm'] + ElementLine[silkX`nm' -silkY`nm' silkX`nm' silkY`nm' silkW`nm'] + ElementLine[silkX`nm' silkY`nm' -silkX`nm' silkY`nm' silkW`nm'] + ElementLine[-silkX`nm' silkY`nm' -silkX`nm' -silkY`nm' silkW`nm'] +)')