5c032b0c156c79813543031282cb94149563fac9
[hw/bdale] / pkg / newlib / molex / miniusb.py
1 #!/usr/bin/python
2 # Copyright 2007 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for
5 #   Molex MiniUSB R/A 5 pos SMD connector 54819-0572, DigiKey WM17116CT-ND
6 #
7
8 # dimensions in mm from 548190572_sd.pdf datasheet
9 TabWidth = 2.05
10 Tab1Height = 4.0
11 Tab2Height = 3.5
12 TabCenters = 4.25
13 BetweenTabs = 7.8
14
15 PinWidth = 0.5
16 PinHeight = 2.25
17 PinSpacing = 0.8
18 PinStart = 3.1 + Tab1Height/2
19
20 CenterLine = TabWidth + BetweenTabs/2
21
22 import sys
23
24 # we're going to use the 1/100 of a mil fundamental unit form
25 def mm2mils100( mm ):
26         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
27
28 print 'Element[0x0 "MiniUSB" "" "" 0 0 -10161 -12011 0 100 0x0]'
29 print "("
30 print '   Pad[', \
31         mm2mils100(CenterLine), \
32         mm2mils100(PinStart + PinWidth/2), \
33         mm2mils100(CenterLine), \
34         mm2mils100(PinStart + PinHeight - PinWidth/2), \
35         mm2mils100(PinWidth), \
36         mm2mils100(PinSpacing - PinWidth), \
37         mm2mils100(PinWidth + 0.1), \
38         '"D+" "3" 0x0100]'
39
40 print '   Pad[', \
41         mm2mils100(CenterLine + PinSpacing), \
42         mm2mils100(PinStart + PinWidth/2), \
43         mm2mils100(CenterLine + PinSpacing), \
44         mm2mils100(PinStart + PinHeight - PinWidth/2), \
45         mm2mils100(PinWidth), \
46         mm2mils100(PinSpacing - PinWidth), \
47         mm2mils100(PinWidth + 0.1), \
48         '"D-" "2" 0x0100]'
49
50 print '   Pad[', \
51         mm2mils100(CenterLine - PinSpacing), \
52         mm2mils100(PinStart + PinWidth/2), \
53         mm2mils100(CenterLine - PinSpacing), \
54         mm2mils100(PinStart + PinHeight - PinWidth/2), \
55         mm2mils100(PinWidth), \
56         mm2mils100(PinSpacing - PinWidth), \
57         mm2mils100(PinWidth + 0.1), \
58         '"HS" "4" 0x0100]'
59
60 print '   Pad[', \
61         mm2mils100(CenterLine + PinSpacing*2), \
62         mm2mils100(PinStart + PinWidth/2), \
63         mm2mils100(CenterLine + PinSpacing*2), \
64         mm2mils100(PinStart + PinHeight - PinWidth/2), \
65         mm2mils100(PinWidth), \
66         mm2mils100(PinSpacing - PinWidth), \
67         mm2mils100(PinWidth + 0.1), \
68         '"VBUS" "1" 0x0100]'
69
70 print '   Pad[', \
71         mm2mils100(CenterLine - PinSpacing*2), \
72         mm2mils100(PinStart + PinWidth/2), \
73         mm2mils100(CenterLine - PinSpacing*2), \
74         mm2mils100(PinStart + PinHeight - PinWidth/2), \
75         mm2mils100(PinWidth), \
76         mm2mils100(PinSpacing - PinWidth), \
77         mm2mils100(PinWidth + 0.1), \
78         '"GND" "5" 0x0100]'
79
80 TabRowTwo = Tab1Height/2 + TabCenters - Tab2Height/2
81 TabColTwo = TabWidth + BetweenTabs
82
83 print '   Pad[', \
84         mm2mils100(TabWidth/2), \
85         mm2mils100(TabWidth/2), \
86         mm2mils100(TabWidth/2), \
87         mm2mils100(Tab1Height - TabWidth/2), \
88         mm2mils100(TabWidth), \
89         mm2mils100(PinSpacing - PinWidth), \
90         mm2mils100(TabWidth + 0.1), \
91         '"tab1" "G" 0x0100]'
92
93 print '   Pad[', \
94         mm2mils100(TabWidth/2), \
95         mm2mils100(TabRowTwo + TabWidth/2), \
96         mm2mils100(TabWidth/2), \
97         mm2mils100(TabRowTwo + Tab2Height - TabWidth/2), \
98         mm2mils100(TabWidth), \
99         mm2mils100(PinSpacing - PinWidth), \
100         mm2mils100(TabWidth + 0.1), \
101         '"tab2" "G" 0x0100]'
102
103 print '   Pad[', \
104         mm2mils100(TabColTwo + TabWidth/2), \
105         mm2mils100(TabWidth/2), \
106         mm2mils100(TabColTwo + TabWidth/2), \
107         mm2mils100(Tab1Height - TabWidth/2), \
108         mm2mils100(TabWidth), \
109         mm2mils100(PinSpacing - PinWidth), \
110         mm2mils100(TabWidth + 0.1), \
111         '"tab3" "G" 0x0100]'
112
113 print '   Pad[', \
114         mm2mils100(TabColTwo + TabWidth/2), \
115         mm2mils100(TabRowTwo + TabWidth/2), \
116         mm2mils100(TabColTwo + TabWidth/2), \
117         mm2mils100(TabRowTwo + Tab2Height - TabWidth/2), \
118         mm2mils100(TabWidth), \
119         mm2mils100(PinSpacing - PinWidth), \
120         mm2mils100(TabWidth + 0.1), \
121         '"tab4" "G" 0x0100]'
122
123 print ")"