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