chiark / gitweb /
before reorg d and manual stuff and...
authorian <ian>
Tue, 24 Aug 2004 22:46:11 +0000 (22:46 +0000)
committerian <ian>
Tue, 24 Aug 2004 22:46:11 +0000 (22:46 +0000)
pcb/generate-netspec.pl
pcb/netlist-expand
pcb/reversers.pcb

index 7c7f143f03bdd5aa5376a86f6b654775a3f6bffd..5c872c014c8f1c3e98efd7826bac3dab3d9bfbb9 100755 (executable)
@@ -24,12 +24,6 @@ push @indiv, qw(cdu_enable
 print "INDIV0 25 :1%13/2 @indiv\n"; # 26-way ribbon
 print "INDIV1 26 @indiv\n";; # 25-way D
 
-foreach $iter (0..5) {
-       foreach $netbase (qw(t q qmid)) {
-               print "$netbase$iter Fat\n";
-       }
-}
-
 while (<DATA>) { print; }
 
 die $! if STDOUT->error;
@@ -50,6 +44,8 @@ rly_v12       Power
                31 l_gnd l_vcc
                33 RB0..7
 
+!type Fat q0..5 qmid0..5 t0..5
+!type Power ptdrain0..17
 
 !PIC-ASSIGN
                1 mclr
index 7950e2449bb15944f4c8a643af835ca307fddf82..30f03c402b1925dfbc87f4e8bd5fb1d2ade2ec70 100755 (executable)
 #
 # !PIC picpinlist
 #   Defines PIC pins - see assignpicpins
+#
+# !type Type ...netspec/netrange...
+#            ...netspec/netrange...   [see below for netrange]
+
 
 # CHIP is [A-Z][A-Z0-9]*
 #
@@ -28,7 +32,7 @@
 #
 #      netspec       assigns next pin to netspec
 #
-#      net\d+..\d+   assigns next several pins to sequentially named nets
+#      net\d+..\d+   netrange: specifies sequentially named nets
 #                    nets will be net\d+ where numbers will go from first
 #                    \d+ to 2nd \d+ in pin-spec-item inclusive (whether
 #                    up or down)
 
 die if $ARGV[0] =~ m/^\-/;
 
-sub o ($$$@) {
-    my ($netname, $type, $fmt, @stuff) = @_;
-    my ($stuff);
-    $stuff= sprintf $fmt, @stuff;
+sub o ($$$) {
+    my ($netname, $type, $stuff) = @_;
     print "# o $netname $type $stuff\n" or die $!;
     if (length $type && exists $net{$netname}{Type}) {
        die "$netname $type" if $net{$netname}{Type} ne $type;
@@ -71,17 +73,10 @@ sub o ($$$@) {
     $net{$netname}{Type}= $type if length $type;
 }
 
-sub unpack_iter_list ($$@) {
-    my ($max,$options,@in) = @_;
-    # options: zero or more characters from
-    #     r   allow several occurrences of same pin number
-    #     p   allow only partial specification
-    #     o   return array of pins (first entry is undef) in order
-    #           instead of array of  { Pin =>, Action => }
-    my (@expanded, @done, @out);
-    my ($i);
+sub expand_netranges (@) {
+    my (@in) = @_;
     local ($_);
-    @expanded= ();
+    my (@expanded) = ();
     foreach $_ (@in) {
        if (m/^(\w*[A-Za-z])(\d+)\.\.(\d+)$/) {
            my ($base,$start,$end)=($1,$2,$3);
@@ -99,6 +94,22 @@ sub unpack_iter_list ($$@) {
            push @expanded, $_;
        }
     }
+    return @expanded;
+}
+
+sub unpack_iter_list ($$@) {
+    my ($max,$options,@in) = @_;
+    # options: zero or more characters from
+    #     r   allow several occurrences of same pin number
+    #     p   allow only partial specification
+    #     o   return array of pins (first entry is undef) in order
+    #           instead of array of  { Pin =>, Action => }
+    my (@expanded, @done, @out);
+    my ($i);
+    local ($_);
+
+    @expanded= expand_netranges(@in);
+
     my $start= 1;
     my $step= 1;
     my $jump= 0;
@@ -261,6 +272,10 @@ sub data_fin () {
     } elsif ($data_accum =~ m/^\!PIC\-DEFINE\s/) {
        shift @s;
        definepicpins(@s);
+    } elsif ($data_accum =~ m/^\!type\s+[A-Z]\w+\s+/) {
+       shift @s;
+       my ($type) = shift @s;
+       map { o($_,$type,''); } expand_netranges(@s);
     } elsif ($data_accum =~ m/^\!/) {
        die "bad directive $data_accum";
     } else {
@@ -281,8 +296,8 @@ while (<>) {
     }
     data_fin();
     if (m/^([a-z]\S+)\s+(\S+)(\s+(\S.*\S))?$/) {
-       o($1,$2,"%s",$3);
-    } elsif (m/^\!?[A-Z].*/ || m,^\d+\-\d+/\d+\s+[A-Z],) {
+       o($1,$2,$3);
+    } elsif (m/^\!/ || m/^[A-Z].*/ || m,^\d+\-\d+/\d+\s+[A-Z],) {
        $data_accum= $_;
     } else {
        die "$_ ?";
index 58dcc12e4f12b3521d32f9cb031bb85ff43cce8f..e43db868816fd8f71d4bd6011b5544a711eb491f 100644 (file)
@@ -1,12 +1,12 @@
 # release: pcb-bin 1.99p
-# date:    Tue Aug 24 23:33:08 2004
+# date:    Tue Aug 24 23:45:54 2004
 # user:    ian (Ian Jackson)
 # host:    anarres.relativity.greenend.org.uk
 
 PCB["reversers.pcb" 1410000 355000]
 
 Grid[2500.00000000 0 0 0]
-Cursor[1198151 158674 3.000000]
+Cursor[1151349 193729 3.575940]
 Thermal[0.500000]
 DRC[809 400 800 800]
 Flags(0x0000000000001e51)
@@ -1864,7 +1864,7 @@ Element[0x00000000 "Transistor" "PTFET3" "TO220W" 1155000 55000 32500 -11500 0 1
 Element[0x00000000 "" "PTD7" "" 1200000 105000 25000 -2500 0 100 0x00000000]
 (
        Pin[0 0 12500 3000 13100 6000 "" "1" 0x00004001]
-       Pin[70000 0 12500 3000 13100 6000 "" "2" 0x00004041]
+       Pin[70000 0 12500 3000 13100 6000 "" "2" 0x00004001]
        ElementLine [55000 0 62500 0 2500]
        ElementLine [7500 0 15000 0 2500]
        ElementLine [20000 7500 20000 -7500 2500]
@@ -2258,7 +2258,7 @@ Element[0x00000000 "" "PTD6" "" 1065000 90000 25000 -2500 0 100 0x00000000]
 Element[0x00000000 "Transistor" "PTFET7" "TO220W" 1155000 105000 32500 -11500 0 100 0x00000000]
 (
        Pin[0 0 8000 3000 8600 3000 "1" "1" 0x00004101]
-       Pin[10000 0 8000 3000 8600 3000 "2" "2" 0x00004045]
+       Pin[10000 0 8000 3000 8600 3000 "2" "2" 0x00004001]
        Pin[20000 0 8000 3000 8600 3000 "3" "3" 0x00004001]
        ElementLine [17000 -12000 17000 -6000 1000]
        ElementLine [3000 -12000 3000 -6000 1000]
@@ -2326,6 +2326,150 @@ Element[0x00000000 "generic" "RAP1" "DIL 16" 967500 167500 17000 5000 3 100 0x00
        ElementArc [15000 -5000 5000 5000 0 180 1000]
 
        )
+Rat[820600 105800 1 857500 107500 1  0x00000010]
+Rat[857500 107500 1 965000 80000 1  0x00000010]
+Rat[820600 105800 1 697500 107500 1  0x00000010]
+Rat[820600 116600 1 857500 117500 1  0x00000010]
+Rat[857500 117500 1 967500 237500 1  0x00000010]
+Rat[820600 116600 1 637500 187500 1  0x00000010]
+Rat[809400 111200 1 867500 107500 1  0x00000010]
+Rat[809400 111200 1 697500 117500 1  0x00000010]
+Rat[867500 107500 1 967500 167500 1  0x00000010]
+Rat[809400 122000 1 867500 117500 1  0x00000010]
+Rat[867500 117500 1 967500 227500 1  0x00000010]
+Rat[809400 122000 1 637500 197500 1  0x00000010]
+Rat[809400 100400 1 867500 97500 1  0x00000010]
+Rat[867500 97500 1 965000 70000 1  0x00000010]
+Rat[809400 100400 1 697500 97500 1  0x00000010]
+Rat[820600 95000 1 857500 97500 1  0x00000010]
+Rat[857500 97500 1 965000 50000 1  0x00000010]
+Rat[820600 95000 1 697500 67500 1  0x00000010]
+Rat[607500 15000 1 1040000 15000 1  0x00000010]
+Rat[1040000 140000 1 1175000 130000 1  0x00000010]
+Rat[617500 25000 1 1065000 15000 1  0x00000010]
+Rat[1065000 140000 1 1200000 130000 1  0x00000010]
+Rat[557500 25000 1 637500 167500 1  0x00000010]
+Rat[577500 15000 1 637500 217500 1  0x00000010]
+Rat[587500 15000 1 697500 217500 1  0x00000010]
+Rat[697500 47500 1 715000 27500 1  0x00000010]
+Rat[715000 27500 1 735000 60000 1  0x00000010]
+Rat[735000 60000 1 767500 62500 1  0x00000010]
+Rat[820600 73400 1 857500 77500 1  0x00000010]
+Rat[820600 73400 1 735000 50000 1  0x00000010]
+Rat[560000 80000 1 580000 80000 1  0x00000010]
+Rat[580000 80000 1 570000 50000 1  0x00000010]
+Rat[580000 80000 1 615000 112500 1  0x00000010]
+Rat[615000 112500 1 697500 57500 1  0x00000010]
+Rat[530000 80000 1 547500 25000 1  0x00000010]
+Rat[550000 80000 1 540000 80000 1  0x00000010]
+Rat[550000 80000 1 580000 130000 1  0x00000010]
+Rat[570000 80000 1 537500 25000 1  0x00000010]
+Rat[550000 50000 1 527500 25000 1  0x00000010]
+Rat[540000 50000 1 580000 105000 1  0x00000010]
+Rat[580000 105000 1 615000 122500 1  0x00000010]
+Rat[537500 57500 1 530000 50000 0  0x00000010]
+Rat[520000 50000 0 520000 42500 0  0x00000010]
+Rat[620000 157500 0 637500 157500 1  0x00000010]
+Rat[637500 157500 1 697500 137500 1  0x00000010]
+Rat[697500 137500 1 717500 140000 1  0x00000010]
+Rat[717500 140000 1 710000 220000 1  0x00000010]
+Rat[710000 220000 1 740000 237500 1  0x00000010]
+Rat[717500 140000 1 777500 62500 1  0x00000010]
+Rat[777500 62500 1 809400 78800 1  0x00000010]
+Rat[809400 78800 1 867500 77500 1  0x00000010]
+Rat[650000 135000 1 697500 127500 1  0x00000010]
+Rat[697500 127500 1 717500 130000 1  0x00000010]
+Rat[717500 130000 1 770000 207500 1  0x00000010]
+Rat[717500 130000 1 795000 20000 1  0x00000010]
+Rat[809400 89600 1 767500 92500 1  0x00000010]
+Rat[809400 89600 1 867500 87500 1  0x00000010]
+Rat[820600 84200 1 857500 87500 1  0x00000010]
+Rat[820600 84200 1 750000 85000 1  0x00000010]
+Rat[597500 25000 1 770000 227500 1  0x00000010]
+Rat[587500 25000 1 740000 227500 1  0x00000010]
+Rat[767500 172500 1 770000 217500 1  0x00000010]
+Rat[750000 165000 1 740000 207500 1  0x00000010]
+Rat[567500 15000 1 637500 47500 1  0x00000010]
+Rat[697500 237500 1 720000 220000 1  0x00000010]
+Rat[720000 220000 1 740000 217500 1  0x00000010]
+Rat[740000 217500 1 770000 237500 1  0x00000010]
+Rat[697500 237500 1 582500 232500 1  0x00000010]
+Rat[820600 138200 1 857500 137500 1  0x00000010]
+Rat[857500 137500 1 967500 177500 1  0x00000010]
+Rat[820600 138200 1 697500 157500 1  0x00000010]
+Rat[809400 132800 1 867500 127500 1  0x00000010]
+Rat[867500 127500 1 967500 187500 1  0x00000010]
+Rat[809400 132800 1 697500 167500 1  0x00000010]
+Rat[809400 143600 1 867500 137500 1  0x00000010]
+Rat[867500 137500 1 967500 197500 1  0x00000010]
+Rat[809400 143600 1 697500 187500 1  0x00000010]
+Rat[820600 149000 1 857500 147500 1  0x00000010]
+Rat[857500 147500 1 967500 207500 1  0x00000010]
+Rat[820600 149000 1 697500 197500 1  0x00000010]
+Rat[820600 159800 1 857500 157500 1  0x00000010]
+Rat[857500 157500 1 967500 217500 1  0x00000010]
+Rat[820600 159800 1 697500 207500 1  0x00000010]
+Rat[697500 87500 1 965000 10000 1  0x00000010]
+Rat[697500 147500 1 965000 20000 1  0x00000010]
+Rat[697500 177500 1 965000 30000 1  0x00000010]
+Rat[697500 227500 1 965000 40000 1  0x00000010]
+Rat[809400 154400 1 867500 147500 1  0x00000010]
+Rat[867500 147500 1 965000 60000 1  0x00000010]
+Rat[809400 154400 1 697500 77500 1  0x00000010]
+Rat[1313100 59200 1 1280000 15000 0  0x00000010]
+Rat[1313100 48400 1 1270000 30000 0  0x00000010]
+Rat[1301900 140200 1 1280000 140000 0  0x00000010]
+Rat[1301900 151000 1 1270000 155000 0  0x00000010]
+Rat[1301900 161800 1 1280000 165000 0  0x00000010]
+Rat[1301900 172600 1 1270000 180000 0  0x00000010]
+Rat[1313100 178000 1 1280000 190000 0  0x00000010]
+Rat[1313100 167200 1 1270000 205000 0  0x00000010]
+Rat[1313100 156400 1 1280000 215000 0  0x00000010]
+Rat[1313100 145600 1 1260000 220000 0  0x00000010]
+Rat[1301900 53800 1 1280000 40000 0  0x00000010]
+Rat[1301900 64600 1 1270000 55000 0  0x00000010]
+Rat[1301900 75400 1 1280000 65000 0  0x00000010]
+Rat[1301900 86200 1 1270000 80000 0  0x00000010]
+Rat[1301900 97000 1 1280000 90000 0  0x00000010]
+Rat[1301900 107800 1 1270000 105000 0  0x00000010]
+Rat[1301900 118600 1 1280000 115000 0  0x00000010]
+Rat[1301900 129400 1 1270000 130000 0  0x00000010]
+Rat[560000 50000 1 845000 20000 1  0x00000010]
+Rat[845000 20000 1 1005000 15000 0  0x00000010]
+Rat[1020000 30000 0 765000 27500 1  0x00000010]
+Rat[1020000 140000 1 997500 167500 1  0x00000010]
+Rat[1020000 155000 0 997500 177500 1  0x00000010]
+Rat[1020000 165000 1 997500 187500 1  0x00000010]
+Rat[1020000 180000 0 997500 197500 1  0x00000010]
+Rat[1020000 190000 1 997500 207500 1  0x00000010]
+Rat[1020000 205000 0 997500 217500 1  0x00000010]
+Rat[1020000 215000 1 997500 227500 1  0x00000010]
+Rat[1020000 230000 0 997500 237500 1  0x00000010]
+Rat[1020000 40000 1 995000 10000 1  0x00000010]
+Rat[1020000 55000 0 995000 20000 1  0x00000010]
+Rat[1020000 65000 1 995000 30000 1  0x00000010]
+Rat[1020000 80000 0 995000 40000 1  0x00000010]
+Rat[1020000 90000 1 995000 50000 1  0x00000010]
+Rat[1020000 105000 0 995000 60000 1  0x00000010]
+Rat[1020000 115000 1 995000 70000 1  0x00000010]
+Rat[1020000 130000 0 995000 80000 1  0x00000010]
+Rat[535000 230000 0 527500 212500 1  0x00000010]
+Rat[535000 102500 0 527500 120000 1  0x00000010]
+Rat[527500 120000 1 527500 140000 1  0x00000010]
+Rat[527500 140000 1 527500 160000 1  0x00000010]
+Rat[527500 160000 1 527500 180000 1  0x00000010]
+Rat[602500 67500 1 595000 67500 1  0x00000010]
+Rat[590000 7500 0 550000 7500 0  0x00000010]
+Rat[482500 52500 0 487500 57500 1  0x00000010]
+Rat[550000 192500 0 582500 192500 1  0x00000010]
+Rat[582500 192500 1 637500 207500 1  0x00000010]
+Rat[582500 182500 0 637500 177500 1  0x00000010]
+Rat[582500 172500 0 630000 170000 1  0x00000010]
+Rat[582500 162500 0 627500 167500 1  0x00000010]
+Rat[582500 212500 0 637500 237500 1  0x00000010]
+Rat[582500 202500 0 637500 227500 1  0x00000010]
+Rat[820600 127400 1 857500 127500 1  0x00000010]
+Rat[820600 127400 1 637500 57500 1  0x00000010]
 Layer(1 "component")
 (
        Line[390000 145000 390000 130000 4000 2000 0x00000020]
@@ -2530,9 +2674,9 @@ Layer(1 "component")
        Line[1030000 40000 1040000 50000 2500 2000 0x00000020]
        Line[1040000 50000 1125000 50000 2500 2000 0x00000020]
        Line[1125000 50000 1135000 40000 2500 2000 0x00000020]
-       Line[1165000 105000 1175000 95000 2500 2000 0x00000064]
-       Line[1175000 95000 1260000 95000 2500 2000 0x00000064]
-       Line[1260000 95000 1270000 105000 2500 2000 0x00000064]
+       Line[1165000 105000 1175000 95000 2500 2000 0x00000020]
+       Line[1175000 95000 1260000 95000 2500 2000 0x00000020]
+       Line[1260000 95000 1270000 105000 2500 2000 0x00000020]
        Line[1135000 90000 1280000 90000 2500 2000 0x00000020]
        Line[547500 15000 520000 15000 2500 2000 0x00000020]
        Line[1135000 65000 1280000 65000 2500 2000 0x00000020]
@@ -2602,7 +2746,7 @@ Layer(2 "solder")
        Line[637500 87500 622500 87500 1000 2000 0x00000020]
        Line[422500 42500 495000 42500 1000 2000 0x00000020]
        Line[437500 37500 500000 37500 1000 2000 0x00000020]
-       Line[1065000 2500 1065000 40000 2500 2000 0x00000020]
+       Line[260000 100000 355000 100000 4000 2000 0x00000020]
        Line[632500 107500 632500 112500 1000 2000 0x00000020]
        Line[607500 62500 612500 67500 1000 2000 0x00000020]
        Line[455000 185000 497500 227500 4000 2000 0x00000020]
@@ -2780,7 +2924,7 @@ Layer(2 "solder")
        Line[97835 22835 95000 22835 4000 2000 0x00000020]
        Line[58465 20000 58465 22500 4000 2000 0x00000020]
        Line[58465 22500 60000 22500 4000 2000 0x00000020]
-       Line[1200000 230000 1200000 237500 2500 2000 0x00000020]
+       Line[1200000 230000 1200000 230000 2500 2000 0x00000020]
        Line[97835 22500 97835 22835 4000 2000 0x00000020]
        Line[156890 22500 156890 23110 4000 2000 0x00000020]
        Line[1040000 40000 1040000 215000 2500 2000 0x00000220]
@@ -2791,9 +2935,9 @@ Layer(2 "solder")
        Line[617500 42500 630000 42500 2500 2000 0x00000020]
        Line[550000 160000 550000 127500 2500 2000 0x00000020]
        Line[637500 67500 640000 67500 1000 2000 0x00000020]
-       Line[1200000 130000 1200000 237500 2500 2000 0x00000020]
+       Line[1200000 130000 1200000 230000 2500 2000 0x00000020]
        Line[380000 80000 295000 80000 4000 2000 0x00000020]
-       Line[260000 100000 355000 100000 4000 2000 0x00000020]
+       Line[1065000 15000 1065000 40000 2500 2000 0x00000020]
 )
 Layer(3 "GND")
 (
@@ -3154,109 +3298,109 @@ NetList()
                Connect("PIC-37")
                Connect("RAP0-6")
        )
-       Net("ptdrain0" "Signal")
+       Net("ptdrain0" "Power")
        (
                Connect("POINTS-12")
                Connect("PTD0-2")
                Connect("PTFET0-2")
        )
-       Net("ptdrain1" "Signal")
+       Net("ptdrain1" "Power")
        (
                Connect("POINTS-13")
                Connect("PTD1-2")
                Connect("PTFET1-2")
        )
-       Net("ptdrain10" "Signal")
+       Net("ptdrain10" "Power")
        (
                Connect("POINTS-17")
                Connect("PTD10-2")
                Connect("PTFET10-2")
        )
-       Net("ptdrain11" "Signal")
+       Net("ptdrain11" "Power")
        (
                Connect("POINTS-16")
                Connect("PTD11-2")
                Connect("PTFET11-2")
        )
-       Net("ptdrain12" "Signal")
+       Net("ptdrain12" "Power")
        (
                Connect("POINTS-15")
                Connect("PTD12-2")
                Connect("PTFET12-2")
        )
-       Net("ptdrain13" "Signal")
+       Net("ptdrain13" "Power")
        (
                Connect("POINTS-14")
                Connect("PTD13-2")
                Connect("PTFET13-2")
        )
-       Net("ptdrain14" "Signal")
+       Net("ptdrain14" "Power")
        (
                Connect("POINTS-1")
                Connect("PTD14-2")
                Connect("PTFET14-2")
        )
-       Net("ptdrain15" "Signal")
+       Net("ptdrain15" "Power")
        (
                Connect("POINTS-2")
                Connect("PTD15-2")
                Connect("PTFET15-2")
        )
-       Net("ptdrain16" "Signal")
+       Net("ptdrain16" "Power")
        (
                Connect("POINTS-3")
                Connect("PTD16-2")
                Connect("PTFET16-2")
        )
-       Net("ptdrain17" "Signal")
+       Net("ptdrain17" "Power")
        (
                Connect("POINTS-4")
                Connect("PTD17-2")
                Connect("PTFET17-2")
        )
-       Net("ptdrain2" "Signal")
+       Net("ptdrain2" "Power")
        (
                Connect("POINTS-25")
                Connect("PTD2-2")
                Connect("PTFET2-2")
        )
-       Net("ptdrain3" "Signal")
+       Net("ptdrain3" "Power")
        (
                Connect("POINTS-24")
                Connect("PTD3-2")
                Connect("PTFET3-2")
        )
-       Net("ptdrain4" "Signal")
+       Net("ptdrain4" "Power")
        (
                Connect("POINTS-23")
                Connect("PTD4-2")
                Connect("PTFET4-2")
        )
-       Net("ptdrain5" "Signal")
+       Net("ptdrain5" "Power")
        (
                Connect("POINTS-22")
                Connect("PTD5-2")
                Connect("PTFET5-2")
        )
-       Net("ptdrain6" "Signal")
+       Net("ptdrain6" "Power")
        (
                Connect("POINTS-21")
                Connect("PTD6-2")
                Connect("PTFET6-2")
        )
-       Net("ptdrain7" "Signal")
+       Net("ptdrain7" "Power")
        (
                Connect("POINTS-20")
                Connect("PTD7-2")
                Connect("PTFET7-2")
        )
-       Net("ptdrain8" "Signal")
+       Net("ptdrain8" "Power")
        (
                Connect("POINTS-19")
                Connect("PTD8-2")
                Connect("PTFET8-2")
        )
-       Net("ptdrain9" "Signal")
+       Net("ptdrain9" "Power")
        (
                Connect("POINTS-18")
                Connect("PTD9-2")