1
0
mirror of https://github.com/whowechina/popn_pico.git synced 2025-03-03 16:43:49 +01:00
popn_pico/PCB/agg-kicad/scripts/build_lib_power.py
2022-08-22 21:51:48 +08:00

97 lines
2.8 KiB
Python

"""
build_lib_power.py
Copyright 2015 Adam Greig
Licensed under the MIT licence, see LICENSE file for details.
Generate generic power symbols for supply and ground nets.
"""
from __future__ import print_function, division
import sys
import os.path
PWR_NAMES = [
"VCC", "VDD", "AVCC", "AVDD",
"1v1", "1v2", "1v8", "2v5", "3v3", "5v", "6v5", "9v", "10v",
"12v", "15v", "24v", "48v",
"-5v", "-9v", "-10v", "-12v", "-15v", "-24v", "-48v",
"VBATT", "VSHORE",
]
GND_NAMES = [
"GND", "AGND", "DGND", "PGND", "CHASSIS", "EARTH"
]
def gnd(name):
out = []
out.append('#\n# {}\n#'.format(name))
out.append('DEF {} #PWR 0 40 N N 1 F P'.format(name))
out.append('F0 "#PWR" -130 40 50 H I L CNN')
out.append('F1 "{}" 0 -100 50 H V C CNN'.format(name))
out.append('DRAW')
out.append('P 2 0 1 0 0 0 0 -30 N')
out.append('P 4 0 1 0 -30 -30 30 -30 0 -60 -30 -30 f')
out.append('X {} 1 0 0 0 L 50 50 1 1 W N'.format(name))
out.append('ENDDRAW\nENDDEF\n#\n')
return out
def pwr(name):
out = []
out.append('#\n# {}\n#'.format(name))
out.append('DEF {} #PWR 0 40 N N 1 F P'.format(name))
out.append('F0 "#PWR" 0 110 50 H I L CNN')
out.append('F1 "{}" 0 90 50 H V C CNN'.format(name))
out.append('DRAW')
out.append('P 2 0 1 0 0 50 20 20 N')
out.append('P 3 0 1 0 0 0 0 50 -20 20 N')
out.append('X {} 1 0 0 0 L 50 50 1 1 W N'.format(name))
out.append('ENDDRAW\nENDDEF\n#\n')
return out
def main(libpath, verify=False):
out = []
out.append("EESchema-LIBRARY Version 2.3")
out.append("#encoding utf-8\n")
out.append("#========================================================")
out.append("# Automatically generated by agg-kicad build_lib_power.py")
out.append("# See github.com/adamgreig/agg-kicad")
out.append("#========================================================\n")
for name in PWR_NAMES:
out += pwr(name)
for name in GND_NAMES:
out += gnd(name)
out.append('# End Library\n')
lib = "\n".join(out)
# Check if the library has changed
if os.path.isfile(libpath):
with open(libpath) as f:
oldlib = f.read()
if lib == oldlib:
return True
# If so, validation has failed or update the library file
if verify:
return False
else:
with open(libpath, "w") as f:
f.write(lib)
if __name__ == "__main__":
if len(sys.argv) == 2:
main(sys.argv[1])
elif len(sys.argv) == 3 and sys.argv[2] == "--verify":
if main(sys.argv[1], verify=True):
print("OK: libs up-to-date.")
sys.exit(0)
else:
print("Error: lib not up-to-date.", file=sys.stderr)
sys.exit(1)
else:
print("Usage: {} <lib path> [--verify]".format(sys.argv[0]))
sys.exit(1)