changeset 128:e90e948e9368

m4-fp: SRAM_TSOPII_44 footprint added
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 16 Jul 2020 18:23:22 +0000
parents 2da7374372a0
children 3f475a608cc2
files ifctf-part-lib/m4-fp/common.m4 ifctf-part-lib/m4-fp/gullwing.inc
diffstat 2 files changed, 60 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- /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']
+)')