This commit is contained in:
rusefillc 2021-01-01 23:59:26 -05:00
parent eece335cb6
commit 2832f01b49
7 changed files with 2557 additions and 1 deletions

3
.gitignore vendored
View File

@ -1,2 +1,3 @@
.gradle
.gradle
build

12
build.gradle Normal file
View File

@ -0,0 +1,12 @@
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
implementation 'junit:junit:4.12'
}
test {
workingDir("build/resources/test")
}

View File

@ -0,0 +1,121 @@
package com.rusefi.netlist;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 12/8/13
* (c) Andrey Belomutskiy
*/
public class NetListMerge {
private static final Pattern GET_HEADER = Pattern.compile("(.*)\\(components(.*)\\s*$", Pattern.DOTALL);
private static final Pattern GET_COMPONENTS = Pattern.compile("(.*)\\)\\s*\\(libparts(.*)\\)\\)\\s*$", Pattern.DOTALL);
private static final Pattern GET_LIBRARTS = Pattern.compile("(.*)\\)\\s*\\(libraries(.*)", Pattern.DOTALL);
private static final Pattern GET_LIBRARIES = Pattern.compile("(.*)\\)\\s*\\(nets(.*)", Pattern.DOTALL);
private NetListMerge() {
}
public static void main(String[] args) throws IOException {
if (args.length < 2) {
System.out.println("This tool takes 'components' sections of multiple KiCad .net files and merges them into one");
System.out.println("usage:");
System.out.println("NetListMerge DEST_FILE SOURCE_1 SOURCE_2 [SOURCE_x]*");
return;
}
String destinationFile = args[0];
NetContent destination = parse(NetListMergeUtil.readFile(destinationFile));
StringBuilder components = new StringBuilder();
StringBuilder libparts = new StringBuilder();
StringBuilder libraries = new StringBuilder();
StringBuilder nets = new StringBuilder();
for (int i = 1; i < args.length; i++) {
String sourceFile = args[i];
NetContent source = parse(NetListMergeUtil.readFile(sourceFile));
components.append(source.components);
libparts.append(source.libparts);
libraries.append(source.libraries);
nets.append(source.nets);
}
System.out.println("Total " + components.length() + " bytes of components");
System.out.println("Total " + libparts.length() + " bytes of libparts");
System.out.println("Total " + libraries.length() + " bytes of libraries");
System.out.println("Total " + nets.length() + " bytes of nets");
StringBuilder result = new StringBuilder(destination.header);
result.append(" (components").append(components).append(")\r\n");
result.append(" (libparts").append(libparts).append(")\n");
result.append(" (libraries").append(libraries).append(")\n");
result.append(" (nets").append(nets).append(")");
result.append(")");
NetListMergeUtil.validateSection(result.toString());
NetListMergeUtil.writeResult(result.toString(), "out.txt");
}
private static class NetContent {
private final String header;
private final String components;
private final String libparts;
private final String nets;
private final String libraries;
private NetContent(String header, String components, String libparts, String libraries, String nets) {
this.header = header;
this.components = components;
this.libparts = libparts;
this.nets = nets;
this.libraries = libraries;
System.out.println("Got " + components.length() + " bytes of components");
System.out.println("Got " + libparts.length() + " bytes of libparts");
System.out.println("Got " + libraries.length() + " bytes of libraries");
System.out.println("Got " + nets.length() + " bytes of nets");
}
}
private static NetContent parse(String content) {
Matcher headerMatcher = GET_HEADER.matcher(content);
headerMatcher.find();
if (!headerMatcher.matches())
throw new IllegalStateException("Does not match expected patten for header");
String header = headerMatcher.group(1);
String nonHeader = headerMatcher.group(2);
Matcher componentsMatcher = GET_COMPONENTS.matcher(nonHeader);
if (!componentsMatcher.matches())
throw new IllegalStateException("Does not match expected patten for components");
String components = componentsMatcher.group(1);
String nonComponents = componentsMatcher.group(2);
NetListMergeUtil.validateSection(components);
Matcher libpartsMatcher = GET_LIBRARTS.matcher(nonComponents);
if (!libpartsMatcher.matches())
throw new IllegalStateException("Does not match expected patten for libparts");
String libparts = libpartsMatcher.group(1);
String nonlibparts = libpartsMatcher.group(2);
NetListMergeUtil.validateSection(libparts);
Matcher librariesMatcher = GET_LIBRARIES.matcher(nonlibparts);
if (!librariesMatcher.matches())
throw new IllegalStateException("Does not match expected patten for nets");
String libraries = librariesMatcher.group(1);
String nets = librariesMatcher.group(2);
NetListMergeUtil.validateSection(libraries);
NetListMergeUtil.validateSection(nets);
// System.out.println("components: " + components);
return new NetContent(header, components, libparts, libraries, nets);
}
}

View File

@ -0,0 +1,51 @@
package com.rusefi.netlist;
import java.io.*;
/**
* 12/8/13
* (c) Andrey Belomutskiy
*/
public class NetListMergeUtil {
static void writeResult(String content, String fileName) throws IOException {
System.out.println("Writing result into " + fileName);
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
bw.write(content);
bw.close();
}
static String readFile(String fileName) throws IOException {
checkExistence(fileName);
System.out.println("Reading " + fileName);
StringBuilder sb = new StringBuilder();
String line;
BufferedReader br = new BufferedReader(new FileReader(fileName));
while (((line = br.readLine()) != null))
sb.append(line).append("\r\n");
return sb.toString();
}
private static void checkExistence(String fileName) {
if (!new File(fileName).isFile()) {
System.err.println("File not found: " + fileName);
System.exit(-1);
}
}
static void validateSection(String section) {
int counter = 0;
for (int i = 0; i < section.length(); i++) {
char c = section.charAt(i);
if (c == '(')
counter++;
else if (c == ')')
counter--;
if (counter < 0)
throw new IllegalStateException("Invalid section: " + section);
}
if (counter != 0)
throw new IllegalStateException("Invalid section: " + section + " balance: " + counter);
}
}

View File

@ -0,0 +1,15 @@
package com.rusefi.netlist;
import org.junit.Test;
import java.io.IOException;
public class NetListTest {
@Test
public void test() throws IOException {
NetListMerge.main(new String[]{
"netlist/Breakout_80pin_1393476-Connector.net",
"netlist/Common_Rail_MC33816.net"
});
}
}

View File

@ -0,0 +1,659 @@
(export (version D)
(design
(source D:\GoogleDrive\MSDLab\KiCad\freelance\rusefi\Breakout_80pin_1393476-Connector\Breakout_80pin_1393476-Connector.sch)
(date "05/10/2020 05:00:12")
(tool "Eeschema (5.1.7)-1")
(sheet (number 1) (name /) (tstamps /)
(title_block
(title)
(company)
(rev)
(date)
(source Breakout_80pin_1393476-Connector.sch)
(comment (number 1) (value ""))
(comment (number 2) (value ""))
(comment (number 3) (value ""))
(comment (number 4) (value "")))))
(components
(comp (ref J1)
(value 8-1393476-0)
(footprint rusefi:8-1393476-0)
(datasheet "MANUFACTURER RECOMMENDATIONS")
(fields
(field (name Field4) "TE CONNECTIVITY")
(field (name Field5) O))
(libsource (lib 1393476) (part 8-1393476-0) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5F844E30))
(comp (ref J11)
(value Conn_01x14)
(footprint Pin_Headers:Pin_Header_Straight_1x14_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x14) (description "Generic connector, single row, 01x14, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F846B31))
(comp (ref J13)
(value Conn_01x14)
(footprint Pin_Headers:Pin_Header_Straight_1x14_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x14) (description "Generic connector, single row, 01x14, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F849EAA))
(comp (ref J8)
(value Conn_01x14)
(footprint Pin_Headers:Pin_Header_Straight_1x14_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x14) (description "Generic connector, single row, 01x14, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F84B717))
(comp (ref J4)
(value Conn_01x14)
(footprint Pin_Headers:Pin_Header_Straight_1x14_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x14) (description "Generic connector, single row, 01x14, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F84E57B))
(comp (ref J9)
(value Screw_Terminal_01x02)
(footprint Wire_Connections_Bridges:WireConnection_2.50mmDrill)
(datasheet ~)
(libsource (lib Connector) (part Screw_Terminal_01x02) (description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F854A4F))
(comp (ref J6)
(value Screw_Terminal_01x02)
(footprint Wire_Connections_Bridges:WireConnection_2.50mmDrill)
(datasheet ~)
(libsource (lib Connector) (part Screw_Terminal_01x02) (description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F856EDA))
(comp (ref J12)
(value Conn_01x12)
(footprint Pin_Headers:Pin_Header_Straight_1x12_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x12) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F85B315))
(comp (ref J10)
(value Conn_01x12)
(footprint Pin_Headers:Pin_Header_Straight_1x12_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x12) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F85E90D))
(comp (ref J15)
(value Conn_01x12)
(footprint Pin_Headers:Pin_Header_Straight_1x12_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x12) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F863844))
(comp (ref J14)
(value Conn_01x12)
(footprint Pin_Headers:Pin_Header_Straight_1x12_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x12) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F865C66))
(comp (ref J5)
(value Conn_01x12)
(footprint Pin_Headers:Pin_Header_Straight_1x12_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x12) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F867AF6))
(comp (ref J2)
(value Conn_01x12)
(footprint Pin_Headers:Pin_Header_Straight_1x12_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x12) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F86DAD5))
(comp (ref J7)
(value Conn_01x12)
(footprint Pin_Headers:Pin_Header_Straight_1x12_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x12) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F86F937))
(comp (ref J3)
(value Conn_01x12)
(footprint Pin_Headers:Pin_Header_Straight_1x12_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x12) (description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5F8734B2))
(comp (ref J16)
(value Conn_01x01)
(footprint Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x01) (description "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5FBC3FA9))
(comp (ref J17)
(value Conn_01x01)
(footprint Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x01) (description "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5FBC470C))
(comp (ref J18)
(value Conn_01x01)
(footprint Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x01) (description "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5FBC5110))
(comp (ref J19)
(value Conn_01x01)
(footprint Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm)
(datasheet ~)
(libsource (lib Connector_Generic) (part Conn_01x01) (description "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5FBC5893))
(comp (ref J20)
(value Screw_Terminal_01x02)
(footprint Wire_Connections_Bridges:WireConnection_2.50mmDrill)
(datasheet ~)
(libsource (lib Connector) (part Screw_Terminal_01x02) (description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5FC14469))
(comp (ref J21)
(value Screw_Terminal_01x02)
(footprint Wire_Connections_Bridges:WireConnection_2.50mmDrill)
(datasheet ~)
(libsource (lib Connector) (part Screw_Terminal_01x02) (description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
(sheetpath (names /) (tstamps /))
(tstamp 5FC14E72)))
(libparts
(libpart (lib 1393476) (part 8-1393476-0)
(docs "MANUFACTURER RECOMMENDATIONS")
(fields
(field (name Reference) J)
(field (name Value) 8-1393476-0)
(field (name Footprint) rusefi:8-1393476-0)
(field (name Field4) "TE CONNECTIVITY")
(field (name Field5) O))
(pins
(pin (num 1) (name 1) (type passive))
(pin (num 2) (name 2) (type passive))
(pin (num 3) (name 3) (type passive))
(pin (num 4) (name 4) (type passive))
(pin (num 5) (name 5) (type passive))
(pin (num 6) (name 6) (type passive))
(pin (num 7) (name 7) (type passive))
(pin (num 8) (name 8) (type passive))
(pin (num 9) (name 9) (type passive))
(pin (num 10) (name 10) (type passive))
(pin (num 11) (name 11) (type passive))
(pin (num 12) (name 12) (type passive))
(pin (num 13) (name 13) (type passive))
(pin (num 14) (name 14) (type passive))
(pin (num 15) (name 15) (type passive))
(pin (num 16) (name 16) (type passive))
(pin (num 17) (name 17) (type passive))
(pin (num 18) (name 18) (type passive))
(pin (num 19) (name 19) (type passive))
(pin (num 20) (name 20) (type passive))
(pin (num 21) (name 21) (type passive))
(pin (num 22) (name 22) (type passive))
(pin (num 23) (name 23) (type passive))
(pin (num 24) (name 24) (type passive))
(pin (num 25) (name 25) (type passive))
(pin (num 26) (name 26) (type passive))
(pin (num 27) (name 27) (type passive))
(pin (num 28) (name 28) (type passive))
(pin (num 29) (name 29) (type passive))
(pin (num 30) (name 30) (type passive))
(pin (num 31) (name 31) (type passive))
(pin (num 32) (name 32) (type passive))
(pin (num 33) (name 33) (type passive))
(pin (num 34) (name 34) (type passive))
(pin (num 35) (name 35) (type passive))
(pin (num 36) (name 36) (type passive))
(pin (num 37) (name 37) (type passive))
(pin (num 38) (name 38) (type passive))
(pin (num 39) (name 39) (type passive))
(pin (num 40) (name 40) (type passive))
(pin (num 41) (name 41) (type passive))
(pin (num 42) (name 42) (type passive))
(pin (num 43) (name 43) (type passive))
(pin (num 44) (name 44) (type passive))
(pin (num 45) (name 45) (type passive))
(pin (num 46) (name 46) (type passive))
(pin (num 47) (name 47) (type passive))
(pin (num 48) (name 48) (type passive))
(pin (num 49) (name 49) (type passive))
(pin (num 50) (name 50) (type passive))
(pin (num 51) (name 51) (type passive))
(pin (num 52) (name 52) (type passive))
(pin (num 53) (name 53) (type passive))
(pin (num 54) (name 54) (type passive))
(pin (num 55) (name 55) (type passive))
(pin (num 56) (name 56) (type passive))
(pin (num 57) (name 57) (type passive))
(pin (num 58) (name 58) (type passive))
(pin (num 59) (name 59) (type passive))
(pin (num 60) (name 60) (type passive))
(pin (num 61) (name 61) (type passive))
(pin (num 62) (name 62) (type passive))
(pin (num 63) (name 63) (type passive))
(pin (num 64) (name 64) (type passive))
(pin (num 65) (name 65) (type passive))
(pin (num 66) (name 66) (type passive))
(pin (num 67) (name 67) (type passive))
(pin (num 68) (name 68) (type passive))
(pin (num 69) (name 69) (type passive))
(pin (num 70) (name 70) (type passive))
(pin (num 71) (name 71) (type passive))
(pin (num 72) (name 72) (type passive))
(pin (num 73) (name 73) (type passive))
(pin (num 74) (name 74) (type passive))
(pin (num 75) (name 75) (type passive))
(pin (num 76) (name 76) (type passive))
(pin (num 77) (name 77) (type passive))
(pin (num 78) (name 78) (type passive))
(pin (num 79) (name 79) (type passive))
(pin (num 80) (name 80) (type passive))
(pin (num 81) (name SHIELD) (type passive))
(pin (num 82) (name SHIELD) (type passive))))
(libpart (lib Connector) (part Screw_Terminal_01x02)
(description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp TerminalBlock*:*))
(fields
(field (name Reference) J)
(field (name Value) Screw_Terminal_01x02))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))))
(libpart (lib Connector_Generic) (part Conn_01x01)
(description "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x01))
(pins
(pin (num 1) (name Pin_1) (type passive))))
(libpart (lib Connector_Generic) (part Conn_01x12)
(description "Generic connector, single row, 01x12, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x12))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))
(pin (num 6) (name Pin_6) (type passive))
(pin (num 7) (name Pin_7) (type passive))
(pin (num 8) (name Pin_8) (type passive))
(pin (num 9) (name Pin_9) (type passive))
(pin (num 10) (name Pin_10) (type passive))
(pin (num 11) (name Pin_11) (type passive))
(pin (num 12) (name Pin_12) (type passive))))
(libpart (lib Connector_Generic) (part Conn_01x14)
(description "Generic connector, single row, 01x14, script generated (kicad-library-utils/schlib/autogen/connector/)")
(docs ~)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x14))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))
(pin (num 6) (name Pin_6) (type passive))
(pin (num 7) (name Pin_7) (type passive))
(pin (num 8) (name Pin_8) (type passive))
(pin (num 9) (name Pin_9) (type passive))
(pin (num 10) (name Pin_10) (type passive))
(pin (num 11) (name Pin_11) (type passive))
(pin (num 12) (name Pin_12) (type passive))
(pin (num 13) (name Pin_13) (type passive))
(pin (num 14) (name Pin_14) (type passive)))))
(libraries
(library (logical 1393476)
(uri D:/GoogleDrive/MSDLab/KiCad/freelance/rusefi/rusefi_lib/8-1393476-0.lib))
(library (logical Connector)
(uri D:\ProgramFiles\KiCAD\share\kicad\library/Connector.lib))
(library (logical Connector_Generic)
(uri D:\ProgramFiles\KiCAD\share\kicad\library/Connector_Generic.lib)))
(nets
(net (code 1) (name "Net-(J1-Pad63)")
(node (ref J4) (pin 8))
(node (ref J1) (pin 63))
(node (ref J8) (pin 8)))
(net (code 2) (name "Net-(J1-Pad54)")
(node (ref J4) (pin 3))
(node (ref J8) (pin 3))
(node (ref J1) (pin 54)))
(net (code 3) (name "Net-(J1-Pad61)")
(node (ref J8) (pin 4))
(node (ref J1) (pin 61))
(node (ref J4) (pin 4)))
(net (code 4) (name "Net-(J1-Pad55)")
(node (ref J8) (pin 5))
(node (ref J1) (pin 55))
(node (ref J4) (pin 5)))
(net (code 5) (name "Net-(J1-Pad62)")
(node (ref J4) (pin 6))
(node (ref J1) (pin 62))
(node (ref J8) (pin 6)))
(net (code 6) (name "Net-(J1-Pad60)")
(node (ref J1) (pin 60))
(node (ref J8) (pin 2))
(node (ref J4) (pin 2)))
(net (code 7) (name "Net-(J1-Pad53)")
(node (ref J4) (pin 1))
(node (ref J8) (pin 1))
(node (ref J1) (pin 53)))
(net (code 8) (name "Net-(J1-Pad56)")
(node (ref J1) (pin 56))
(node (ref J4) (pin 7))
(node (ref J8) (pin 7)))
(net (code 9) (name "Net-(J1-Pad57)")
(node (ref J1) (pin 57))
(node (ref J4) (pin 9))
(node (ref J8) (pin 9)))
(net (code 10) (name "Net-(J1-Pad64)")
(node (ref J8) (pin 10))
(node (ref J1) (pin 64))
(node (ref J4) (pin 10)))
(net (code 11) (name "Net-(J1-Pad58)")
(node (ref J4) (pin 11))
(node (ref J8) (pin 11))
(node (ref J1) (pin 58)))
(net (code 12) (name "Net-(J1-Pad65)")
(node (ref J1) (pin 65))
(node (ref J4) (pin 12))
(node (ref J8) (pin 12)))
(net (code 13) (name "Net-(J1-Pad59)")
(node (ref J1) (pin 59))
(node (ref J4) (pin 13))
(node (ref J8) (pin 13)))
(net (code 14) (name "Net-(J1-Pad66)")
(node (ref J8) (pin 14))
(node (ref J1) (pin 66))
(node (ref J4) (pin 14)))
(net (code 15) (name "Net-(J1-Pad26)")
(node (ref J7) (pin 12))
(node (ref J3) (pin 12))
(node (ref J1) (pin 26)))
(net (code 16) (name "Net-(J1-Pad11)")
(node (ref J3) (pin 5))
(node (ref J1) (pin 11))
(node (ref J7) (pin 5)))
(net (code 17) (name "Net-(J1-Pad23)")
(node (ref J7) (pin 6))
(node (ref J1) (pin 23))
(node (ref J3) (pin 6)))
(net (code 18) (name "Net-(J1-Pad12)")
(node (ref J7) (pin 7))
(node (ref J1) (pin 12))
(node (ref J3) (pin 7)))
(net (code 19) (name "Net-(J1-Pad24)")
(node (ref J1) (pin 24))
(node (ref J7) (pin 8))
(node (ref J3) (pin 8)))
(net (code 20) (name "Net-(J1-Pad13)")
(node (ref J3) (pin 9))
(node (ref J1) (pin 13))
(node (ref J7) (pin 9)))
(net (code 21) (name "Net-(J1-Pad25)")
(node (ref J3) (pin 10))
(node (ref J7) (pin 10))
(node (ref J1) (pin 25)))
(net (code 22) (name "Net-(J1-Pad14)")
(node (ref J3) (pin 11))
(node (ref J7) (pin 11))
(node (ref J1) (pin 14)))
(net (code 23) (name "Net-(J1-Pad22)")
(node (ref J7) (pin 4))
(node (ref J1) (pin 22))
(node (ref J3) (pin 4)))
(net (code 24) (name "Net-(J1-Pad10)")
(node (ref J1) (pin 10))
(node (ref J3) (pin 3))
(node (ref J7) (pin 3)))
(net (code 25) (name "Net-(J1-Pad21)")
(node (ref J3) (pin 2))
(node (ref J1) (pin 21))
(node (ref J7) (pin 2)))
(net (code 26) (name "Net-(J1-Pad9)")
(node (ref J1) (pin 9))
(node (ref J7) (pin 1))
(node (ref J3) (pin 1)))
(net (code 27) (name "Net-(J1-Pad79)")
(node (ref J1) (pin 79))
(node (ref J13) (pin 12))
(node (ref J11) (pin 12)))
(net (code 28) (name "Net-(J1-Pad67)")
(node (ref J11) (pin 1))
(node (ref J1) (pin 67))
(node (ref J13) (pin 1)))
(net (code 29) (name "Net-(J1-Pad68)")
(node (ref J11) (pin 3))
(node (ref J1) (pin 68))
(node (ref J13) (pin 3)))
(net (code 30) (name "Net-(J1-Pad74)")
(node (ref J13) (pin 2))
(node (ref J1) (pin 74))
(node (ref J11) (pin 2)))
(net (code 31) (name "Net-(J1-Pad75)")
(node (ref J1) (pin 75))
(node (ref J11) (pin 4))
(node (ref J13) (pin 4)))
(net (code 32) (name "Net-(J1-Pad69)")
(node (ref J11) (pin 5))
(node (ref J1) (pin 69))
(node (ref J13) (pin 5)))
(net (code 33) (name "Net-(J1-Pad76)")
(node (ref J1) (pin 76))
(node (ref J11) (pin 6))
(node (ref J13) (pin 6)))
(net (code 34) (name "Net-(J1-Pad70)")
(node (ref J11) (pin 7))
(node (ref J1) (pin 70))
(node (ref J13) (pin 7)))
(net (code 35) (name "Net-(J1-Pad77)")
(node (ref J11) (pin 8))
(node (ref J1) (pin 77))
(node (ref J13) (pin 8)))
(net (code 36) (name "Net-(J1-Pad71)")
(node (ref J11) (pin 9))
(node (ref J1) (pin 71))
(node (ref J13) (pin 9)))
(net (code 37) (name "Net-(J1-Pad78)")
(node (ref J11) (pin 10))
(node (ref J13) (pin 10))
(node (ref J1) (pin 78)))
(net (code 38) (name "Net-(J1-Pad72)")
(node (ref J13) (pin 11))
(node (ref J1) (pin 72))
(node (ref J11) (pin 11)))
(net (code 39) (name "Net-(J1-Pad73)")
(node (ref J11) (pin 13))
(node (ref J1) (pin 73))
(node (ref J13) (pin 13)))
(net (code 40) (name "Net-(J1-Pad80)")
(node (ref J11) (pin 14))
(node (ref J1) (pin 80))
(node (ref J13) (pin 14)))
(net (code 41) (name "Net-(J1-Pad46)")
(node (ref J12) (pin 12))
(node (ref J15) (pin 12))
(node (ref J1) (pin 46)))
(net (code 42) (name "Net-(J1-Pad34)")
(node (ref J12) (pin 11))
(node (ref J1) (pin 34))
(node (ref J15) (pin 11)))
(net (code 43) (name "Net-(J1-Pad45)")
(node (ref J1) (pin 45))
(node (ref J15) (pin 10))
(node (ref J12) (pin 10)))
(net (code 44) (name "Net-(J1-Pad33)")
(node (ref J15) (pin 9))
(node (ref J1) (pin 33))
(node (ref J12) (pin 9)))
(net (code 45) (name "Net-(J1-Pad44)")
(node (ref J12) (pin 8))
(node (ref J1) (pin 44))
(node (ref J15) (pin 8)))
(net (code 46) (name "Net-(J1-Pad32)")
(node (ref J1) (pin 32))
(node (ref J12) (pin 7))
(node (ref J15) (pin 7)))
(net (code 47) (name "Net-(J1-Pad15)")
(node (ref J1) (pin 15))
(node (ref J2) (pin 2))
(node (ref J5) (pin 2)))
(net (code 48) (name "Net-(J1-Pad3)")
(node (ref J1) (pin 3))
(node (ref J2) (pin 1))
(node (ref J5) (pin 1)))
(net (code 49) (name "Net-(J1-Pad1)")
(node (ref J20) (pin 1))
(node (ref J1) (pin 1))
(node (ref J6) (pin 1)))
(net (code 50) (name "Net-(J1-Pad5)")
(node (ref J2) (pin 5))
(node (ref J5) (pin 5))
(node (ref J1) (pin 5)))
(net (code 51) (name "Net-(J1-Pad19)")
(node (ref J1) (pin 19))
(node (ref J5) (pin 10))
(node (ref J2) (pin 10)))
(net (code 52) (name "Net-(J1-Pad7)")
(node (ref J1) (pin 7))
(node (ref J2) (pin 9))
(node (ref J5) (pin 9)))
(net (code 53) (name "Net-(J1-Pad18)")
(node (ref J1) (pin 18))
(node (ref J5) (pin 8))
(node (ref J2) (pin 8)))
(net (code 54) (name "Net-(J1-Pad6)")
(node (ref J2) (pin 7))
(node (ref J5) (pin 7))
(node (ref J1) (pin 6)))
(net (code 55) (name "Net-(J1-Pad17)")
(node (ref J5) (pin 6))
(node (ref J1) (pin 17))
(node (ref J2) (pin 6)))
(net (code 56) (name "Net-(J1-Pad16)")
(node (ref J2) (pin 4))
(node (ref J5) (pin 4))
(node (ref J1) (pin 16)))
(net (code 57) (name "Net-(J1-Pad4)")
(node (ref J2) (pin 3))
(node (ref J5) (pin 3))
(node (ref J1) (pin 4)))
(net (code 58) (name "Net-(J1-Pad8)")
(node (ref J1) (pin 8))
(node (ref J2) (pin 11))
(node (ref J5) (pin 11)))
(net (code 59) (name "Net-(J1-Pad20)")
(node (ref J2) (pin 12))
(node (ref J1) (pin 20))
(node (ref J5) (pin 12)))
(net (code 60) (name "Net-(J1-Pad2)")
(node (ref J1) (pin 2))
(node (ref J20) (pin 2))
(node (ref J6) (pin 2)))
(net (code 61) (name Earth)
(node (ref J1) (pin 82))
(node (ref J16) (pin 1))
(node (ref J17) (pin 1))
(node (ref J18) (pin 1))
(node (ref J1) (pin 81))
(node (ref J19) (pin 1)))
(net (code 62) (name "Net-(J1-Pad52)")
(node (ref J14) (pin 12))
(node (ref J1) (pin 52))
(node (ref J10) (pin 12)))
(net (code 63) (name "Net-(J1-Pad50)")
(node (ref J10) (pin 8))
(node (ref J14) (pin 8))
(node (ref J1) (pin 50)))
(net (code 64) (name "Net-(J1-Pad38)")
(node (ref J10) (pin 7))
(node (ref J14) (pin 7))
(node (ref J1) (pin 38)))
(net (code 65) (name "Net-(J1-Pad49)")
(node (ref J14) (pin 6))
(node (ref J1) (pin 49))
(node (ref J10) (pin 6)))
(net (code 66) (name "Net-(J1-Pad37)")
(node (ref J1) (pin 37))
(node (ref J14) (pin 5))
(node (ref J10) (pin 5)))
(net (code 67) (name "Net-(J1-Pad48)")
(node (ref J14) (pin 4))
(node (ref J10) (pin 4))
(node (ref J1) (pin 48)))
(net (code 68) (name "Net-(J1-Pad36)")
(node (ref J10) (pin 3))
(node (ref J1) (pin 36))
(node (ref J14) (pin 3)))
(net (code 69) (name "Net-(J1-Pad47)")
(node (ref J14) (pin 2))
(node (ref J1) (pin 47))
(node (ref J10) (pin 2)))
(net (code 70) (name "Net-(J1-Pad35)")
(node (ref J14) (pin 1))
(node (ref J1) (pin 35))
(node (ref J10) (pin 1)))
(net (code 71) (name "Net-(J1-Pad40)")
(node (ref J10) (pin 11))
(node (ref J14) (pin 11))
(node (ref J1) (pin 40)))
(net (code 72) (name "Net-(J1-Pad51)")
(node (ref J10) (pin 10))
(node (ref J1) (pin 51))
(node (ref J14) (pin 10)))
(net (code 73) (name "Net-(J1-Pad43)")
(node (ref J12) (pin 6))
(node (ref J1) (pin 43))
(node (ref J15) (pin 6)))
(net (code 74) (name "Net-(J1-Pad39)")
(node (ref J1) (pin 39))
(node (ref J14) (pin 9))
(node (ref J10) (pin 9)))
(net (code 75) (name "Net-(J1-Pad31)")
(node (ref J15) (pin 5))
(node (ref J12) (pin 5))
(node (ref J1) (pin 31)))
(net (code 76) (name "Net-(J1-Pad28)")
(node (ref J21) (pin 2))
(node (ref J1) (pin 28))
(node (ref J9) (pin 2)))
(net (code 77) (name "Net-(J1-Pad27)")
(node (ref J9) (pin 1))
(node (ref J21) (pin 1))
(node (ref J1) (pin 27)))
(net (code 78) (name "Net-(J1-Pad29)")
(node (ref J1) (pin 29))
(node (ref J15) (pin 1))
(node (ref J12) (pin 1)))
(net (code 79) (name "Net-(J1-Pad42)")
(node (ref J15) (pin 4))
(node (ref J1) (pin 42))
(node (ref J12) (pin 4)))
(net (code 80) (name "Net-(J1-Pad30)")
(node (ref J15) (pin 3))
(node (ref J1) (pin 30))
(node (ref J12) (pin 3)))
(net (code 81) (name "Net-(J1-Pad41)")
(node (ref J15) (pin 2))
(node (ref J1) (pin 41))
(node (ref J12) (pin 2)))))

File diff suppressed because it is too large Load Diff