r5359 - in trunk/eda: . scripts

alvieboy at docs.openmoko.org alvieboy at docs.openmoko.org
Sat Aug 1 12:12:22 CEST 2009


Author: alvieboy
Date: 2009-08-01 12:12:22 +0200 (Sat, 01 Aug 2009)
New Revision: 5359

Added:
   trunk/eda/scripts/
   trunk/eda/scripts/list_netlist_components_by_value.pl
   trunk/eda/scripts/unconnected_pins_report.pl
Log:
Add some useful scripts

Added: trunk/eda/scripts/list_netlist_components_by_value.pl
===================================================================
--- trunk/eda/scripts/list_netlist_components_by_value.pl	                        (rev 0)
+++ trunk/eda/scripts/list_netlist_components_by_value.pl	2009-08-01 10:12:22 UTC (rev 5359)
@@ -0,0 +1,32 @@
+use strict;
+use Data::Dumper;
+
+use Kicad::Library;
+use Kicad::Netlist;
+
+my $sch = new Kicad::Netlist;
+
+defined $ARGV[0] or do { print "Usage: $0 netlistfile\n"; exit 0; };
+
+$sch->parse("../gta02-core.net");
+
+my %libs;
+my %uses;
+
+my $components = $sch->get_components();
+
+while( my ($cname,$comp) = each %{$components}) {
+    $libs{ $comp->{'library'} }->{$comp->{'value'}}||=0;
+    $libs{ $comp->{'library'} }->{$comp->{'value'}}++;
+
+    $uses{ $comp->{'library'} }||=0;
+    $uses{ $comp->{'library'} }+= 1;
+}
+
+while (my ($lib,$vals) = each %libs) {
+    print "Component $lib ($uses{$lib} components)\n";
+    foreach my $v( keys %$vals) {
+        printf " [%03d] %s\n", $vals->{$v},$v;
+    }
+    print "\n";
+}

Added: trunk/eda/scripts/unconnected_pins_report.pl
===================================================================
--- trunk/eda/scripts/unconnected_pins_report.pl	                        (rev 0)
+++ trunk/eda/scripts/unconnected_pins_report.pl	2009-08-01 10:12:22 UTC (rev 5359)
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+use strict;
+use Carp;
+use Kicad::Netlist;
+use Kicad::Project;
+
+(defined $ARGV[0] && defined $ARGV[1]) or 
+    do { print "Usage: $0 projectfile netlistfile\n"; exit 0; };
+
+sub padprint
+{
+    my ($size,$str) = @_;
+    my $diff = $size - length($str);
+    return $diff>0 ? $str.' 'x$diff : substr($str,0,$size);
+}
+
+my $prj = new Kicad::Project($ARGV[0]);
+my $net = new Kicad::Netlist($ARGV[1]);
+my $components = $net->get_components();
+
+print "Unconnected pin report\n\n";
+print "COMPONENT TYPE                PIN   NAME\n";
+print "--------- ------------------- ----- ------------------------\n";
+
+foreach my $comp (keys %{$components}) {
+    my $type = $components->{$comp}->{'library'};
+    my $cref = $prj->find_component_in_libraries($type);
+    croak "Component $comp not found in libraries (of type $type)" unless defined $cref;
+    while ( my ($pin_number,$pin_name) = each %{$components->{$comp}->{'pins'}}) {
+        $pin_name eq '?' && print padprint(10,$comp), padprint(20,$type), 
+            padprint(6,$pin_number), $cref->{pins}->{$pin_number}->{name}, "\n";
+    }
+}




More information about the commitlog mailing list