From: ian Date: Sat, 28 Aug 2004 19:28:41 +0000 (+0000) Subject: rats nicely laid out etc except for pic pins X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=c1d0ee2e44a01c56ee2fd3888462a58626323045;p=trains.git rats nicely laid out etc except for pic pins --- diff --git a/pcb/detectors.pcb b/pcb/detectors.pcb index dc7eb5e..da59881 100644 --- a/pcb/detectors.pcb +++ b/pcb/detectors.pcb @@ -1,12 +1,12 @@ # release: pcb-bin 1.99p -# date: Sat Aug 28 19:27:50 2004 +# date: Sat Aug 28 20:27:40 2004 # user: ian (Ian Jackson) # host: anarres.relativity.greenend.org.uk PCB["detectors.pcb" 1410000 355000] Grid[2500.00000000 0 0 0] -Cursor[620000 202500 2.826317] +Cursor[563442 422582 5.826317] Thermal[0.500000] DRC[809 400 800 800] Flags(0x0000000000001e51) @@ -1714,7 +1714,7 @@ Element[0x00000000 "Axial non-polar component (typically resistor or capacitor), ) -Element[0x00000000 "generic" "OC4" "DIL 16" 580000 295000 8000 -10000 1 100 0x00000000] +Element[0x00000000 "generic" "OC4" "DIL 16" 580000 287500 8000 -10000 1 100 0x00000000] ( Pin[0 0 6000 3000 6600 2800 "1" "1" 0x00004101] Pin[10000 0 6000 3000 6600 2800 "2" "2" 0x00004001] @@ -1768,7 +1768,7 @@ Element[0x00000000 "generic" "OC3" "DIL 16" 625000 162500 10000 8000 0 100 0x000 ) -Element[0x00000000 "8xR-array 0.25W, common pin" "RAS1" "100" 692500 215000 6000 -6000 0 100 0x00000000] +Element[0x00000000 "8xR-array 0.25W, common pin" "RAS1" "100" 670000 162500 6000 -6000 0 100 0x00000000] ( Pin[0 0 7000 3000 7500 3000 "common" "1" 0x00000101] Pin[0 10000 7000 3000 7500 3000 "1" "2" 0x00000001] @@ -1857,7 +1857,7 @@ Element[0x00000000 "Axial non-polar component (typically resistor or capacitor), ) -Element[0x00000000 "8xR-array 0.25W, common pin" "RAS2" "100" 670000 162500 6000 -6000 0 100 0x00000000] +Element[0x00000000 "8xR-array 0.25W, common pin" "RAS2" "100" 690000 215000 6000 -6000 0 100 0x00000000] ( Pin[0 0 7000 3000 7500 3000 "common" "1" 0x00000101] Pin[0 10000 7000 3000 7500 3000 "1" "2" 0x00000001] @@ -2494,6 +2494,55 @@ Rat[532500 45000 1 625000 25000 1 0x00000010] Rat[512500 15000 1 615000 25000 1 0x00000010] Rat[502500 15000 1 500000 67500 1 0x00000010] Rat[500000 67500 1 542500 67500 1 0x00000010] +Rat[552500 15000 1 580000 27500 1 0x00000010] +Rat[580000 27500 1 615000 15000 1 0x00000010] +Rat[615000 15000 1 625000 15000 1 0x00000010] +Rat[625000 15000 1 635000 15000 1 0x00000010] +Rat[635000 15000 1 645000 15000 1 0x00000010] +Rat[645000 15000 1 665000 25000 1 0x00000010] +Rat[552500 15000 1 492500 15000 1 0x00000010] +Rat[665000 25000 1 655000 87500 1 0x00000010] +Rat[655000 87500 1 655000 107500 1 0x00000010] +Rat[655000 107500 1 655000 127500 1 0x00000010] +Rat[655000 127500 1 655000 147500 1 0x00000010] +Rat[655000 147500 1 655000 172500 1 0x00000010] +Rat[655000 172500 1 655000 192500 1 0x00000010] +Rat[655000 192500 1 655000 212500 1 0x00000010] +Rat[655000 212500 1 655000 232500 1 0x00000010] +Rat[655000 232500 1 650000 257500 1 0x00000010] +Rat[650000 257500 1 630000 257500 1 0x00000010] +Rat[630000 257500 1 610000 257500 1 0x00000010] +Rat[610000 257500 1 590000 257500 1 0x00000010] +Rat[610000 257500 1 610000 232500 1 0x00000010] +Rat[610000 232500 1 610000 212500 1 0x00000010] +Rat[610000 212500 1 610000 192500 1 0x00000010] +Rat[610000 192500 1 610000 172500 1 0x00000010] +Rat[610000 172500 1 610000 147500 1 0x00000010] +Rat[610000 147500 1 610000 127500 1 0x00000010] +Rat[610000 127500 1 610000 107500 1 0x00000010] +Rat[610000 107500 1 610000 87500 1 0x00000010] +Rat[650000 257500 1 675000 265000 1 0x00000010] +Rat[655000 172500 1 702500 180000 1 0x00000010] +Rat[702500 180000 1 722500 180000 1 0x00000010] +Rat[722500 180000 1 782500 160000 1 0x00000010] +Rat[782500 160000 1 800000 172500 1 0x00000010] +Rat[675000 265000 1 747500 287500 1 0x00000010] +Rat[747500 287500 1 815000 292500 1 0x00000010] +Rat[782500 160000 1 842500 32500 1 0x00000010] +Rat[842500 32500 1 976900 57400 1 0x00000010] +Rat[552500 45000 1 552500 67500 1 0x00000010] +Rat[552500 45000 1 580000 37500 1 0x00000010] +Rat[580000 37500 1 655000 25000 1 0x00000010] +Rat[655000 25000 1 670000 67500 1 0x00000010] +Rat[670000 67500 1 697500 42500 1 0x00000010] +Rat[552500 45000 1 472500 37500 1 0x00000010] +Rat[670000 67500 1 670000 162500 1 0x00000010] +Rat[670000 162500 1 702500 170000 1 0x00000010] +Rat[702500 170000 1 722500 170000 1 0x00000010] +Rat[702500 170000 1 690000 215000 1 0x00000010] +Rat[722500 170000 1 782500 150000 1 0x00000010] +Rat[782500 150000 1 810000 172500 1 0x00000010] +Rat[810000 172500 1 845000 262500 1 0x00000010] Rat[976900 68200 1 1000000 275000 1 0x00000010] Rat[988100 62800 1 950000 290000 1 0x00000010] Rat[685000 25000 1 845000 282500 1 0x00000010] @@ -2553,11 +2602,11 @@ Rat[625000 147500 1 625000 172500 1 0x00000010] Rat[625000 172500 1 625000 192500 1 0x00000010] Rat[625000 192500 1 625000 212500 1 0x00000010] Rat[625000 212500 1 625000 232500 1 0x00000010] -Rat[625000 232500 1 630000 295000 1 0x00000010] -Rat[630000 295000 1 650000 295000 1 0x00000010] -Rat[630000 295000 1 610000 295000 1 0x00000010] -Rat[610000 295000 1 590000 295000 1 0x00000010] -Rat[650000 295000 1 675000 295000 1 0x00000010] +Rat[625000 232500 1 630000 287500 1 0x00000010] +Rat[630000 287500 1 650000 287500 1 0x00000010] +Rat[630000 287500 1 610000 287500 1 0x00000010] +Rat[610000 287500 1 590000 287500 1 0x00000010] +Rat[650000 287500 1 675000 295000 1 0x00000010] Rat[492500 240000 1 497500 240000 1 0x00000010] Rat[232500 92500 1 500000 92500 1 0x00000010] Rat[487500 237500 1 500000 237500 1 0x00000010] @@ -2572,69 +2621,69 @@ Rat[457500 302500 1 507500 302500 1 0x00000010] Rat[372500 97500 1 495000 97500 1 0x00000010] Rat[487500 242500 1 495000 242500 1 0x00000010] Rat[302500 95000 1 497500 95000 1 0x00000010] -Rat[610000 77500 1 670000 77500 1 0x00000010] -Rat[670000 77500 1 722500 100000 1 0x00000010] -Rat[610000 97500 1 670000 87500 1 0x00000010] -Rat[670000 87500 1 722500 110000 1 0x00000010] -Rat[610000 202500 1 692500 245000 1 0x00000010] -Rat[692500 245000 1 722500 230000 1 0x00000010] -Rat[610000 222500 1 692500 255000 1 0x00000010] -Rat[692500 255000 1 722500 250000 1 0x00000010] -Rat[655000 162500 1 692500 265000 1 0x00000010] -Rat[692500 265000 1 722500 260000 1 0x00000010] -Rat[655000 182500 1 692500 275000 1 0x00000010] -Rat[692500 275000 1 782500 250000 1 0x00000010] -Rat[655000 202500 1 692500 285000 1 0x00000010] -Rat[692500 285000 1 782500 230000 1 0x00000010] -Rat[655000 222500 1 692500 295000 1 0x00000010] -Rat[655000 222500 1 782500 190000 1 0x00000010] -Rat[580000 265000 1 670000 172500 1 0x00000010] +Rat[655000 117500 1 670000 127500 1 0x00000010] +Rat[670000 127500 1 722500 100000 1 0x00000010] +Rat[610000 202500 1 670000 212500 1 0x00000010] +Rat[670000 212500 1 722500 110000 1 0x00000010] +Rat[610000 182500 1 670000 192500 1 0x00000010] +Rat[670000 192500 1 722500 230000 1 0x00000010] +Rat[600000 257500 1 690000 235000 1 0x00000010] +Rat[690000 235000 1 722500 250000 1 0x00000010] +Rat[610000 97500 1 670000 97500 1 0x00000010] +Rat[670000 97500 1 722500 260000 1 0x00000010] +Rat[655000 162500 1 670000 182500 1 0x00000010] +Rat[670000 182500 1 782500 250000 1 0x00000010] +Rat[580000 257500 1 690000 225000 1 0x00000010] +Rat[690000 225000 1 782500 230000 1 0x00000010] +Rat[655000 77500 1 670000 87500 1 0x00000010] +Rat[670000 87500 1 782500 190000 1 0x00000010] +Rat[610000 162500 1 670000 172500 1 0x00000010] Rat[670000 172500 1 782500 180000 1 0x00000010] -Rat[600000 265000 1 670000 182500 1 0x00000010] -Rat[670000 182500 1 782500 170000 1 0x00000010] -Rat[620000 265000 1 670000 192500 1 0x00000010] -Rat[670000 192500 1 782500 120000 1 0x00000010] -Rat[640000 265000 1 670000 202500 1 0x00000010] -Rat[670000 202500 1 782500 110000 1 0x00000010] -Rat[610000 117500 1 670000 97500 1 0x00000010] -Rat[670000 97500 1 722500 120000 1 0x00000010] -Rat[665000 265000 1 670000 212500 1 0x00000010] -Rat[670000 212500 1 782500 100000 1 0x00000010] -Rat[610000 137500 1 670000 107500 1 0x00000010] -Rat[670000 107500 1 722500 130000 1 0x00000010] -Rat[655000 77500 1 670000 117500 1 0x00000010] -Rat[670000 117500 1 722500 140000 1 0x00000010] -Rat[655000 97500 1 670000 127500 1 0x00000010] -Rat[670000 127500 1 722500 150000 1 0x00000010] -Rat[655000 117500 1 670000 137500 1 0x00000010] -Rat[670000 137500 1 722500 160000 1 0x00000010] +Rat[655000 222500 1 670000 242500 1 0x00000010] +Rat[670000 242500 1 782500 170000 1 0x00000010] +Rat[610000 77500 1 670000 77500 1 0x00000010] +Rat[670000 77500 1 782500 120000 1 0x00000010] Rat[655000 137500 1 670000 147500 1 0x00000010] -Rat[670000 147500 1 722500 200000 1 0x00000010] -Rat[610000 162500 1 692500 225000 1 0x00000010] -Rat[692500 225000 1 722500 210000 1 0x00000010] -Rat[610000 182500 1 692500 235000 1 0x00000010] -Rat[692500 235000 1 722500 220000 1 0x00000010] -Rat[580000 77500 1 562500 142500 1 0x00000010] -Rat[580000 97500 1 562500 215000 1 0x00000010] -Rat[580000 202500 1 562500 195000 1 0x00000010] -Rat[580000 222500 1 562500 267500 1 0x00000010] -Rat[625000 162500 1 562500 112500 1 0x00000010] -Rat[625000 182500 1 562500 185000 1 0x00000010] -Rat[625000 202500 1 562500 257500 1 0x00000010] -Rat[625000 222500 1 562500 102500 1 0x00000010] -Rat[580000 295000 1 562500 175000 1 0x00000010] -Rat[600000 295000 1 562500 247500 1 0x00000010] -Rat[620000 295000 1 562500 92500 1 0x00000010] -Rat[640000 295000 1 562500 165000 1 0x00000010] -Rat[580000 117500 1 562500 287500 1 0x00000010] -Rat[665000 295000 1 562500 237500 1 0x00000010] +Rat[670000 147500 1 782500 110000 1 0x00000010] +Rat[640000 257500 1 690000 255000 1 0x00000010] +Rat[690000 255000 1 722500 120000 1 0x00000010] +Rat[610000 222500 1 670000 232500 1 0x00000010] +Rat[670000 232500 1 782500 100000 1 0x00000010] +Rat[610000 137500 1 670000 137500 1 0x00000010] +Rat[670000 137500 1 722500 130000 1 0x00000010] +Rat[655000 202500 1 670000 222500 1 0x00000010] +Rat[655000 202500 1 722500 140000 1 0x00000010] +Rat[665000 265000 1 690000 265000 1 0x00000010] +Rat[690000 265000 1 722500 150000 1 0x00000010] +Rat[610000 117500 1 670000 117500 1 0x00000010] +Rat[670000 117500 1 722500 160000 1 0x00000010] +Rat[655000 182500 1 670000 202500 1 0x00000010] +Rat[670000 202500 1 722500 200000 1 0x00000010] +Rat[620000 257500 1 690000 245000 1 0x00000010] +Rat[690000 245000 1 722500 210000 1 0x00000010] +Rat[655000 97500 1 670000 107500 1 0x00000010] +Rat[670000 107500 1 722500 220000 1 0x00000010] +Rat[625000 117500 1 562500 142500 1 0x00000010] +Rat[580000 202500 1 562500 215000 1 0x00000010] +Rat[580000 182500 1 562500 195000 1 0x00000010] +Rat[600000 287500 1 562500 267500 1 0x00000010] +Rat[580000 97500 1 562500 112500 1 0x00000010] +Rat[625000 162500 1 562500 185000 1 0x00000010] +Rat[580000 287500 1 562500 257500 1 0x00000010] +Rat[625000 77500 1 562500 102500 1 0x00000010] +Rat[580000 162500 1 562500 175000 1 0x00000010] +Rat[625000 222500 1 562500 247500 1 0x00000010] +Rat[580000 77500 1 562500 92500 1 0x00000010] +Rat[625000 137500 1 562500 165000 1 0x00000010] +Rat[640000 287500 1 562500 287500 1 0x00000010] +Rat[580000 222500 1 562500 237500 1 0x00000010] Rat[580000 137500 1 562500 152500 1 0x00000010] -Rat[625000 77500 1 562500 225000 1 0x00000010] -Rat[625000 97500 1 562500 297500 1 0x00000010] -Rat[625000 117500 1 562500 132500 1 0x00000010] -Rat[625000 137500 1 562500 205000 1 0x00000010] -Rat[580000 162500 1 562500 277500 1 0x00000010] -Rat[580000 182500 1 562500 122500 1 0x00000010] +Rat[625000 202500 1 562500 225000 1 0x00000010] +Rat[665000 295000 1 562500 297500 1 0x00000010] +Rat[580000 117500 1 562500 132500 1 0x00000010] +Rat[625000 182500 1 562500 205000 1 0x00000010] +Rat[620000 287500 1 562500 277500 1 0x00000010] +Rat[625000 97500 1 562500 122500 1 0x00000010] Layer(1 "component") ( Line[492500 220000 465000 192500 4000 2000 0x00000020] @@ -3661,198 +3710,198 @@ NetList() ) Net("sense0" "Signal") ( - Connect("OC0-16") + Connect("OC1-12") Connect("PIC-4") - Connect("RAS0-2") + Connect("RAS0-7") ) Net("sense1" "Signal") ( - Connect("OC0-14") + Connect("OC2-12") Connect("PIC-5") - Connect("RAS0-3") + Connect("RAS1-6") ) Net("sense10" "Signal") ( - Connect("OC2-12") + Connect("OC2-14") Connect("PIC-17") Connect("RAS1-4") ) Net("sense11" "Signal") ( - Connect("OC2-10") + Connect("OC4-14") Connect("PIC-19") - Connect("RAS1-5") + Connect("RAS2-3") ) Net("sense12" "Signal") ( - Connect("OC3-16") + Connect("OC0-14") Connect("PIC-20") - Connect("RAS1-6") + Connect("RAS0-4") ) Net("sense13" "Signal") ( - Connect("OC3-14") + Connect("OC3-16") Connect("PIC-22") - Connect("RAS1-7") + Connect("RAS1-3") ) Net("sense14" "Signal") ( - Connect("OC3-12") + Connect("OC4-16") Connect("PIC-24") - Connect("RAS1-8") + Connect("RAS2-2") ) Net("sense15" "Signal") ( - Connect("OC3-10") + Connect("OC1-16") Connect("PIC-28") - Connect("RAS1-9") + Connect("RAS0-3") ) Net("sense16" "Signal") ( - Connect("OC4-16") + Connect("OC2-16") Connect("PIC-29") - Connect("RAS2-2") + Connect("RAS1-2") ) Net("sense17" "Signal") ( - Connect("OC4-14") + Connect("OC3-10") Connect("PIC-30") - Connect("RAS2-3") + Connect("RAS1-9") ) Net("sense18" "Signal") ( - Connect("OC4-12") + Connect("OC0-16") Connect("PIC-35") - Connect("RAS2-4") + Connect("RAS0-2") ) Net("sense19" "Signal") ( - Connect("OC4-10") + Connect("OC1-10") Connect("PIC-36") - Connect("RAS2-5") + Connect("RAS0-9") ) Net("sense2" "Signal") ( - Connect("OC0-12") + Connect("OC4-10") Connect("PIC-6") - Connect("RAS0-4") + Connect("RAS2-5") ) Net("sense20" "Signal") ( - Connect("OC5-4") + Connect("OC2-10") Connect("PIC-37") - Connect("RAS2-6") + Connect("RAS1-8") ) Net("sense3" "Signal") ( Connect("OC0-10") Connect("PIC-7") - Connect("RAS0-5") + Connect("RAS0-8") ) Net("sense4" "Signal") ( - Connect("OC1-16") + Connect("OC3-12") Connect("PIC-8") - Connect("RAS0-6") + Connect("RAS1-7") ) Net("sense5" "Signal") ( - Connect("OC1-14") + Connect("OC5-4") Connect("PIC-9") - Connect("RAS0-7") + Connect("RAS2-6") ) Net("sense6" "Signal") ( - Connect("OC1-12") + Connect("OC0-12") Connect("PIC-10") - Connect("RAS0-8") + Connect("RAS0-6") ) Net("sense7" "Signal") ( - Connect("OC1-10") + Connect("OC3-14") Connect("PIC-14") - Connect("RAS0-9") + Connect("RAS1-5") ) Net("sense8" "Signal") ( - Connect("OC2-16") + Connect("OC4-12") Connect("PIC-15") - Connect("RAS1-2") + Connect("RAS2-4") ) Net("sense9" "Signal") ( - Connect("OC2-14") + Connect("OC1-14") Connect("PIC-16") - Connect("RAS1-3") + Connect("RAS0-5") ) Net("sensei0" "Signal") ( - Connect("OC0-1") + Connect("OC1-5") Connect("RS0-1") ) Net("sensei1" "Signal") ( - Connect("OC0-3") + Connect("OC2-5") Connect("RS1-1") ) Net("sensei10" "Signal") ( - Connect("OC2-5") + Connect("OC2-3") Connect("RS10-1") ) Net("sensei11" "Signal") ( - Connect("OC2-7") + Connect("OC4-3") Connect("RS11-1") ) Net("sensei12" "Signal") ( - Connect("OC3-1") + Connect("OC0-3") Connect("RS12-1") ) Net("sensei13" "Signal") ( - Connect("OC3-3") + Connect("OC3-1") Connect("RS13-1") ) Net("sensei14" "Signal") ( - Connect("OC3-5") + Connect("OC4-1") Connect("RS14-1") ) Net("sensei15" "Signal") ( - Connect("OC3-7") + Connect("OC1-1") Connect("RS15-1") ) Net("sensei16" "Signal") ( - Connect("OC4-1") + Connect("OC2-1") Connect("RS16-1") ) Net("sensei17" "Signal") ( - Connect("OC4-3") + Connect("OC3-7") Connect("RS17-1") ) Net("sensei18" "Signal") ( - Connect("OC4-5") + Connect("OC0-1") Connect("RS18-1") ) Net("sensei19" "Signal") ( - Connect("OC4-7") + Connect("OC1-7") Connect("RS19-1") ) Net("sensei2" "Signal") ( - Connect("OC0-5") + Connect("OC4-7") Connect("RS2-1") ) Net("sensei20" "Signal") ( - Connect("OC5-1") + Connect("OC2-7") Connect("RS20-1") ) Net("sensei3" "Signal") @@ -3862,32 +3911,32 @@ NetList() ) Net("sensei4" "Signal") ( - Connect("OC1-1") + Connect("OC3-5") Connect("RS4-1") ) Net("sensei5" "Signal") ( - Connect("OC1-3") + Connect("OC5-1") Connect("RS5-1") ) Net("sensei6" "Signal") ( - Connect("OC1-5") + Connect("OC0-5") Connect("RS6-1") ) Net("sensei7" "Signal") ( - Connect("OC1-7") + Connect("OC3-3") Connect("RS7-1") ) Net("sensei8" "Signal") ( - Connect("OC2-1") + Connect("OC4-5") Connect("RS8-1") ) Net("sensei9" "Signal") ( - Connect("OC2-3") + Connect("OC1-3") Connect("RS9-1") ) Net("sshort0" "Signal") diff --git a/pcb/generate-netspec.pl b/pcb/generate-netspec.pl index fefb4e1..fa4ba21 100755 --- a/pcb/generate-netspec.pl +++ b/pcb/generate-netspec.pl @@ -37,6 +37,9 @@ if ($reversers) { x qmid= o 8 ); + $val{'m'}= ''; + $val{'M'}= ''; + $val{'n'}= ''; } else { push @indiv, qw( spare0 @@ -54,6 +57,17 @@ if ($reversers) { x q= o 4 ); + @sensel= qw(18 15 12 9 6 0 3 19 16 13 10 7 1 4 20 17 14 11 8 2 5); + $val{'m'}.= "sensei{"; + for ($j=0; $j<16; $j+=8) { + for ($i=0;$i<4;$i++) { + $val{'m'} .= sprintf " %d %d", $i+$j, $i+$j+4; + } + } + $val{'m'}.= " sensei16..20 }{ @sensel }"; + $val{'M'}= $val{'m'}; + $val{'M'} =~ s/sensei/sense/g; + $val{'n'}= "sense{ sense0..20 }{ @sensel }"; } print "INDIV0 25 :1%13/2 @indiv\n"; # 26-way ribbon @@ -66,7 +80,7 @@ while () { next; } next unless $doing; - s/\^(\w)/ die unless exists $val{$1}; $val{$1}; /ge; + s/\^(\w)/ die $1 unless exists $val{$1}; $val{$1}; /ge; print; } @@ -105,12 +119,6 @@ BUS 32 CAC05 2 l_gnd l_vcc 0-1/1 CPIC= 2 l_gnd l_vcc -0-^q/4 OC= 16==^o - :1+2 sensei<..> - :2+2 q*& - :-1-2 l_gnd*& - :-0-2 sense<..> - 0-^q/1 BR= 4 :1+2 sshort=*2 :2 ^x @@ -156,6 +164,12 @@ RLG 2 ledmid_green led_green RLR 2 ledmid_red led_red RLL 2 perpicled l_gnd +0-^q/4 OC= 16==^o ^m ^M + :1+2 sensei<..> + :2+2 q*& + :-1-2 l_gnd*& + :-0-2 sense<..> + ^=reversers: !type Fat t0..5 @@ -232,7 +246,7 @@ POINTS 25 0-^q/8 RAS= 9 l_vcc - :2 sense<..> + ^n :2 sense<..> !PIC-ASSIGN 1 mclr diff --git a/pcb/netlist-expand b/pcb/netlist-expand index 393d381..648189b 100755 --- a/pcb/netlist-expand +++ b/pcb/netlist-expand @@ -32,6 +32,17 @@ # # netspec assigns next pin to netspec # +# net{ fornet }{ usegate } +# remapping specification: +# every time net\d+ would be assigned instead, +# this remapping table is consulted. fornet +# and usegate are lists of net assignments or +# just digits (which are taken to mean net\d+); +# they must be of equal length and will be taken +# pairwise as instructions that each time an entry in +# usegate is to be assigned, the corresponding entry +# from fornet will be used instead. +# # 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 @@ -118,6 +129,7 @@ sub unpack_iter_list ($$@) { my $limitcounter= ''; my ($usepin, $remainder, $quotient, $afterlimit); my (@toprocess) = @expanded; + my (%gatemap); while (@toprocess) { $_= shift @toprocess; if (!length $modulo) { @@ -131,7 +143,33 @@ sub unpack_iter_list ($$@) { ($start + $step * $quotient + $jump * $remainder); - if (m/^\d+$/) { + if (m/^(\w+)\{$/) { + my ($netbase) = $1; + my (@fornet,@usegate,$i); + my ($current) = \@fornet; + for (;;) { + die unless @toprocess; + $_= shift @toprocess; + if (m/^\}\{$/) { + die unless $current==\@fornet; + $current= \@usegate; + } elsif (m/^\}$/) { + die unless $current==\@usegate; + last; + } elsif (m/^[a-z]\w*$/) { + push @$current, $&; + } elsif (m/^\d+$/) { + push @$current, $netbase.$&; + } else { + die "$_ (@in) (@expanded)"; + } + } + die "(@fornet) (@usegate (@in) (@expanded)" + unless @fornet == @usegate; + for ($i=0; $i<@fornet; $i++) { + $gatemap{$fornet[$i]}= $usegate[$i]; + } + } elsif (m/^\d+$/) { die "$_ != $usepin $max (@in) (@expanded)" if $usepin ne $&; } elsif ( @@ -162,6 +200,7 @@ sub unpack_iter_list ($$@) { if $usepin > $max; die "already $done[$usepin] $_ $max (@in) (@expanded)" if ($options !~ m/r/) && defined $done[$usepin]; + $_= $gatemap{$_} if exists $gatemap{$_}; push @out, { Pin => $usepin, Action => $_ }; $done[$usepin]= $_; }