#!/usr/bin/perl # # Look for Symbols used in .asc files, whose # value does not correspond with a model in # the .lib file. $generic{"BREAKER"} = 1; $generic{"C-US"} = 1; $generic{"CPOL-US"} = 1; $generic{"DINA3_L"} = 1; $generic{"DOCFIELD"} = 1; $generic{"EDGE-LEFT"} = 1; $generic{"EDGE-RIGHT"} = 1; $generic{"J"} = 1; $generic{"L"} = 1; $generic{"L-US"} = 1; $generic{"LETTER_L"} = 1; $generic{"M"} = 1; $generic{"MA01-1"} = 1; $generic{"MV"} = 1; $generic{"PAD"} = 1; $generic{"PIN"} = 1; $generic{"POT_US-"} = 1; $generic{"R"} = 1; $generic{"R-TRIM"} = 1; $generic{"R-US"} = 1; $generic{"R-US_"} = 1; $generic{"TABL_L"} = 1; $generic{"TRIMPOT"} = 1; $generic{"VOLTAGE"} = 1; %vals = (); for $f (<*/*.asc>) { open(INPUT, $f) || die "$f: $!"; while () { $_ =~ y/a-z/A-Z/; $symbol = $1 if /^SYMBOL (\S+)/; next if $generic{$symbol}; $vals{"$symbol $1"} = $f if /^SYMATTR VALUE (\S+)/; } } %models = (); $models{"1N914"} = 1; $models{"2N2222"} = 1; $models{"2N3906"} = 1; $models{"DGL-3V"} = 1; $models{"FLIPCHIP"} = 1; $models{"MCR649"} = 1; $models{"OUTLINE-DOUBLE"} = 1; $models{"OUTLINE-SINGLE"} = 1; $models{"OUTLINE-SINGLE-R"} = 1; $models{"T-2037"} = 1; $models{"T-2052"} = 1; $models{"PT55"} = 1; $models{"TAMURA"} = 1; open(INPUT, "myparts.lib") || die "myparts.lib: $!"; while () { $_ =~ y/a-z/A-Z/; $models{$1} = 1 if /^.MODEL (\S+)/; } sub byname { $a cmp $b } $count = 0; foreach $k (sort byname keys %vals) { $f = $vals{$k}; ($symbol, $value) = split(/ /, $k); next if defined $models{$value}; warn "$symbol $value: no model ($f)\n"; $count++; } print " $count models are missing\n";