convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / Omega2S.py
1 #!/usr/bin/python3
2 # Copyright 2022 by Bdale Garbee <bdale@gag.com>.  GPLv3
3 #
4 # Program to emit PCB footprint for Onion Omega2S Linux SOM
5 #
6
7 # dimensions in mm from:
8 #       onion/Omega2S_Datasheet.pdf
9
10 BodyLength = 34.0
11 BodyWidth = 20.0
12
13 OuterPitch = 1.27
14 OuterWidth = 0.86
15 OuterHeight = 1.50
16
17 LeftOffset = 1.76
18
19 import sys
20
21 # we're going to use the 1/100 of a mil fundamental unit form
22 def mm2mils100( mm ):
23         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
24
25 print('# author: Bdale Garbee')
26 print('# email: bdale@gag.com')
27 print('# dist-license: GPL 3')
28 print('# use-license: unlimited')
29
30 print('Element[0x0 "Omega2S" "" "" 0 0 11000 0 0 100 0x0]')
31 print("(")
32
33 # outer 2 long rows
34 for pin in range (0,25):
35     print('   Pad[',\
36         mm2mils100(-BodyLength/2 + LeftOffset + pin*OuterPitch), \
37         mm2mils100(-BodyWidth/2 + OuterHeight/2 - OuterWidth/2), \
38         mm2mils100(-BodyLength/2 + LeftOffset + pin*OuterPitch), \
39         mm2mils100(-BodyWidth/2 - OuterHeight/2 + OuterWidth/2), \
40         mm2mils100(OuterWidth), \
41         mm2mils100(OuterPitch - OuterWidth), \
42         mm2mils100(OuterWidth)+600, \
43         '"pin%i"' % (63 - pin), '"%i"' % (63 - pin), '"square"]')
44
45     print('   Pad[',\
46         mm2mils100(-BodyLength/2 + LeftOffset + pin*OuterPitch), \
47         mm2mils100(BodyWidth/2 + OuterHeight/2 - OuterWidth/2), \
48         mm2mils100(-BodyLength/2 + LeftOffset + pin*OuterPitch), \
49         mm2mils100(BodyWidth/2 - OuterHeight/2 + OuterWidth/2), \
50         mm2mils100(OuterWidth), \
51         mm2mils100(OuterPitch - OuterWidth), \
52         mm2mils100(OuterWidth)+600, \
53         '"pin%i"' % (1 + pin), '"%i"' % (1 + pin), '"square"]')
54
55 # right side row
56 for pin in range (0,13):
57     print('   Pad[',\
58         mm2mils100(BodyLength/2 + OuterHeight/2 - OuterWidth/2), \
59         mm2mils100((pin-6) * OuterPitch), \
60         mm2mils100(BodyLength/2 - OuterHeight/2 + OuterWidth/2), \
61         mm2mils100((pin-6) * OuterPitch), \
62         mm2mils100(OuterWidth), \
63         mm2mils100(OuterPitch - OuterWidth), \
64         mm2mils100(OuterWidth)+600, \
65         '"pin%i"' % (38 - pin), '"%i"' % (38 - pin), '"square"]')
66
67 print('   ElementLine[',\
68         mm2mils100(-BodyLength/2), \
69         mm2mils100(-BodyWidth/2), \
70         mm2mils100(-BodyLength/2), \
71         mm2mils100( BodyWidth/2), \
72         '1000 ]')
73
74 print('   ElementLine[',\
75         mm2mils100(-BodyLength/2), \
76         mm2mils100( BodyWidth/2), \
77         mm2mils100( BodyLength/2), \
78         mm2mils100( BodyWidth/2), \
79         '1000 ]')
80
81 print('   ElementLine[',\
82         mm2mils100( BodyLength/2), \
83         mm2mils100( BodyWidth/2), \
84         mm2mils100( BodyLength/2), \
85         mm2mils100(-BodyWidth/2), \
86         '1000 ]')
87
88 print('   ElementLine[',\
89         mm2mils100( BodyLength/2), \
90         mm2mils100(-BodyWidth/2), \
91         mm2mils100(-BodyLength/2), \
92         mm2mils100(-BodyWidth/2), \
93         '1000 ]')
94
95 print(")")