DIRECTORY CD, CDCells, CDIO, CDOps, Convert, DABasics, Rope, Route, RoutePrivate; RouteTestDDE: CEDAR PROGRAM IMPORTS CD, CDCells, CDIO, CDOps, Convert, Rope, Route = BEGIN EnumerateChannelNets: Route.EnumerateChannelNetsProc ~ { nets: LIST OF NetDef _ NARROW[channelData]; UNTIL nets = NIL DO net: NetDef _ nets.first; eachNet[net.name, EnumerateChannelPins, net.exitLeftOrBottom, net.exitRightOrTop, net.mayExit, net.trunkSize*8, NIL, net.netData]; nets _ nets.rest; ENDLOOP}; EnumerateChannelPins: Route.EnumerateChannelPinsProc ~ { pins: LIST OF Route.Pin _ NARROW[netData]; UNTIL pins = NIL DO pin: Route.Pin _ pins.first; bottomOrLeft: BOOL _ pin.side = bottom; offset: INT _ IF runType = shiftRight AND bottomOrLeft THEN +11*4 ELSE IF runType = shiftLeft AND bottomOrLeft THEN -11*4 ELSE 0; eachPin[bottomOrLeft, pin.min*8 +offset, pin.max*8+offset, pin.depth, pin.layer]; pins _ pins.rest; ENDLOOP}; BrokenNet: Route.BrokenNetProc ~ { newLabel _ Rope.Cat[sourceNet, "-", Convert.RopeFromInt[regionNumber], "/", Convert.RopeFromInt[numberOfRegions]]}; MakeDDENets: PROC [] RETURNS [nets: LIST OF NetDef] ~ { Net1: PROC [ ] RETURNS [net1: NetDef] ~ { net1p1: Route.Pin _ NEW[Route.PinRec _ [228, 231, 0, metal, top]]; net1p2: Route.Pin _ NEW[Route.PinRec _ [525, 528, 0, metal, top]]; net1p3: Route.Pin _ NEW[Route.PinRec _ [547, 550, 0, metal, top]]; net1p4: Route.Pin _ NEW[Route.PinRec _ [624, 627, 0, metal, top]]; net1p5: Route.Pin _ NEW[Route.PinRec _ [1042, 1045, 0, metal, top]]; net1p6: Route.Pin _ NEW[Route.PinRec _ [437, 440, 0, metal, bottom]]; net1 _ NEW[NetDefRec _ ["net1", TRUE, FALSE, FALSE, 0, LIST[net1p1, net1p2, net1p3, net1p4, net1p5, net1p6]]]}; Net2: PROC [ ] RETURNS [net2: NetDef] ~ { net2p1: Route.Pin _ NEW[Route.PinRec _ [8, 11, 0, metal, top]]; net2p2: Route.Pin _ NEW[Route.PinRec _ [547, 550, 0, metal, bottom]]; net2p3: Route.Pin _ NEW[Route.PinRec _ [569, 572, 0, metal, bottom]]; net2 _ NEW[NetDefRec _ ["net2", FALSE, FALSE, FALSE, 0, LIST[net2p1, net2p2, net2p3]]]}; Net3: PROC [ ] RETURNS [net3: NetDef] ~ { net3p1: Route.Pin _ NEW[Route.PinRec _ [85, 88, 0, metal, top]]; net3p2: Route.Pin _ NEW[Route.PinRec _ [316, 319, 0, metal, top]]; net3p3: Route.Pin _ NEW[Route.PinRec _ [448, 451, 0, metal, top]]; net3p4: Route.Pin _ NEW[Route.PinRec _ [690, 693, 0, metal, top]]; net3p5: Route.Pin _ NEW[Route.PinRec _ [8, 11, 0, metal, bottom]]; net3p6: Route.Pin _ NEW[Route.PinRec _ [481, 484, 0, metal, bottom]]; net3p7: Route.Pin _ NEW[Route.PinRec _ [503, 506, 0, metal, bottom]]; net3 _ NEW[NetDefRec _ ["net3", FALSE, FALSE, FALSE, 0, LIST[net3p1, net3p2, net3p3, net3p4, net3p5, net3p6, net3p7]]]}; Net4: PROC [ ] RETURNS [net4: NetDef] ~ { net4p1: Route.Pin _ NEW[Route.PinRec _ [19, 22, 0, metal, top]]; net4p2: Route.Pin _ NEW[Route.PinRec _ [140, 143, 0, metal, bottom]]; net4 _ NEW[NetDefRec _ ["net4", FALSE, FALSE, FALSE, 0, LIST[net4p1, net4p2]]]}; Net5: PROC [ ] RETURNS [net5: NetDef] ~ { net5p1: Route.Pin _ NEW[Route.PinRec _ [118, 121, 0, metal, top]]; net5p2: Route.Pin _ NEW[Route.PinRec _ [151, 154, 0, metal, top]]; net5p3: Route.Pin _ NEW[Route.PinRec _ [503, 506, 0, metal, top]]; net5p4: Route.Pin _ NEW[Route.PinRec _ [536, 539, 0, metal, top]]; net5p5: Route.Pin _ NEW[Route.PinRec _ [19, 22, 0, metal, bottom]]; net5p6: Route.Pin _ NEW[Route.PinRec _ [52, 55, 0, metal, bottom]]; net5 _ NEW[NetDefRec _ ["net5", FALSE, FALSE, FALSE, 0, LIST[net5p1, net5p2, net5p3, net5p4, net5p5, net5p6]]]}; Net6: PROC [ ] RETURNS [net6: NetDef] ~ { net6p1: Route.Pin _ NEW[Route.PinRec _ [30, 33, 0, metal, top]]; net6p2: Route.Pin _ NEW[Route.PinRec _ [756, 759, 0, metal, top]]; net6p3: Route.Pin _ NEW[Route.PinRec _ [822, 825, 0, metal, top]]; net6p4: Route.Pin _ NEW[Route.PinRec _ [1229, 1232, 0, metal, top]]; net6p5: Route.Pin _ NEW[Route.PinRec _ [1328, 1331, 0, metal, top]]; net6p6: Route.Pin _ NEW[Route.PinRec _ [173, 176, 0, metal, bottom]]; net6p7: Route.Pin _ NEW[Route.PinRec _ [228, 231, 0, metal, bottom]]; net6p8: Route.Pin _ NEW[Route.PinRec _ [349, 352, 0, metal, bottom]]; net6p9: Route.Pin _ NEW[Route.PinRec _ [635, 638, 0, metal, bottom]]; net6p10: Route.Pin _ NEW[Route.PinRec _ [844, 847, 0, metal, bottom]]; net6p11: Route.Pin _ NEW[Route.PinRec _ [1317, 1320, 0, metal, bottom]]; net6p12: Route.Pin _ NEW[Route.PinRec _ [1328, 1331, 0, metal, bottom]]; net6 _ NEW[NetDefRec _ ["net6", FALSE, FALSE, FALSE, 0, LIST[net6p1, net6p2, net6p3, net6p4, net6p5, net6p6, net6p7, net6p8, net6p9, net6p10, net6p11, net6p12]]]}; Net7: PROC [ ] RETURNS [net7: NetDef] ~ { net7p1: Route.Pin _ NEW[Route.PinRec _ [184, 187, 0, metal, top]]; net7p2: Route.Pin _ NEW[Route.PinRec _ [30, 33, 0, metal, bottom]]; net7p3: Route.Pin _ NEW[Route.PinRec _ [96, 99, 0, metal, bottom]]; net7p4: Route.Pin _ NEW[Route.PinRec _ [129, 132, 0, metal, bottom]]; net7 _ NEW[NetDefRec _ ["net7", FALSE, FALSE, FALSE, 0, LIST[net7p1, net7p2, net7p3, net7p4]]]}; Net8: PROC [ ] RETURNS [net8: NetDef] ~ { net8p1: Route.Pin _ NEW[Route.PinRec _ [41, 44, 0, metal, top]]; net8p2: Route.Pin _ NEW[Route.PinRec _ [701, 704, 0, metal, top]]; net8p3: Route.Pin _ NEW[Route.PinRec _ [877, 880, 0, metal, top]]; net8p4: Route.Pin _ NEW[Route.PinRec _ [1130, 1133, 0, metal, top]]; net8p5: Route.Pin _ NEW[Route.PinRec _ [1383, 1386, 0, metal, top]]; net8p6: Route.Pin _ NEW[Route.PinRec _ [162, 165, 0, metal, bottom]]; net8p7: Route.Pin _ NEW[Route.PinRec _ [217, 220, 0, metal, bottom]]; net8p8: Route.Pin _ NEW[Route.PinRec _ [338, 341, 0, metal, bottom]]; net8p9: Route.Pin _ NEW[Route.PinRec _ [646, 649, 0, metal, bottom]]; net8p10: Route.Pin _ NEW[Route.PinRec _ [789, 792, 0, metal, bottom]]; net8p11: Route.Pin _ NEW[Route.PinRec _ [1218, 1221, 0, metal, bottom]]; net8p12: Route.Pin _ NEW[Route.PinRec _ [1427, 1430, 0, metal, bottom]]; net8 _ NEW[NetDefRec _ ["net8", FALSE, FALSE, FALSE, 0, LIST[net8p1, net8p2, net8p3, net8p4, net8p5, net8p6, net8p7, net8p8, net8p9, net8p10, net8p11, net8p12]]]}; Net9: PROC [ ] RETURNS [net9: NetDef] ~ { net9p1: Route.Pin _ NEW[Route.PinRec _ [96, 99, 0, metal, top]]; net9p2: Route.Pin _ NEW[Route.PinRec _ [459, 462, 0, metal, top]]; net9p3: Route.Pin _ NEW[Route.PinRec _ [613, 616, 0, metal, top]]; net9p4: Route.Pin _ NEW[Route.PinRec _ [41, 44, 0, metal, bottom]]; net9p5: Route.Pin _ NEW[Route.PinRec _ [536, 539, 0, metal, bottom]]; net9p6: Route.Pin _ NEW[Route.PinRec _ [558, 561, 0, metal, bottom]]; net9 _ NEW[NetDefRec _ ["net9", FALSE, FALSE, FALSE, 0, LIST[net9p1, net9p2, net9p3, net9p4, net9p5, net9p6]]]}; Net10: PROC [ ] RETURNS [net10: NetDef] ~ { net10p1: Route.Pin _ NEW[Route.PinRec _ [52, 55, 0, metal, top]]; net10p2: Route.Pin _ NEW[Route.PinRec _ [305, 308, 0, metal, top]]; net10 _ NEW[NetDefRec _ ["net10", FALSE, FALSE, FALSE, 0, LIST[net10p1, net10p2]]]}; Net11: PROC [ ] RETURNS [net11: NetDef] ~ { net11p1: Route.Pin _ NEW[Route.PinRec _ [63, 66, 0, metal, top]]; net11p2: Route.Pin _ NEW[Route.PinRec _ [140, 143, 0, metal, top]]; net11p3: Route.Pin _ NEW[Route.PinRec _ [327, 330, 0, metal, top]]; net11p4: Route.Pin _ NEW[Route.PinRec _ [371, 374, 0, metal, top]]; net11p5: Route.Pin _ NEW[Route.PinRec _ [393, 396, 0, metal, top]]; net11p6: Route.Pin _ NEW[Route.PinRec _ [437, 440, 0, metal, top]]; net11p7: Route.Pin _ NEW[Route.PinRec _ [239, 242, 0, metal, bottom]]; net11p8: Route.Pin _ NEW[Route.PinRec _ [371, 374, 0, metal, bottom]]; net11 _ NEW[NetDefRec _ ["net11", FALSE, FALSE, FALSE, 0, LIST[net11p1, net11p2, net11p3, net11p4, net11p5, net11p6, net11p7]]]}; Net12: PROC [ ] RETURNS [net12: NetDef] ~ { net12p1: Route.Pin _ NEW[Route.PinRec _ [195, 198, 0, metal, top]]; net12p2: Route.Pin _ NEW[Route.PinRec _ [63, 66, 0, metal, bottom]]; net12p3: Route.Pin _ NEW[Route.PinRec _ [107, 110, 0, metal, bottom]]; net12 _ NEW[NetDefRec _ ["net12", FALSE, FALSE, FALSE, 0, LIST[net12p1, net12p2, net12p3]]]}; Net13: PROC [ ] RETURNS [net13: NetDef] ~ { net13p1: Route.Pin _ NEW[Route.PinRec _ [74, 77, 0, metal, top]]; net13p2: Route.Pin _ NEW[Route.PinRec _ [151, 154, 0, metal, bottom]]; net13 _ NEW[NetDefRec _ ["net13", FALSE, FALSE, FALSE, 0, LIST[net13p1, net13p2]]]}; Net14: PROC [ ] RETURNS [net14: NetDef] ~ { net14p1: Route.Pin _ NEW[Route.PinRec _ [162, 165, 0, metal, top]]; net14p2: Route.Pin _ NEW[Route.PinRec _ [173, 176, 0, metal, top]]; net14p3: Route.Pin _ NEW[Route.PinRec _ [74, 77, 0, metal, bottom]]; net14p4: Route.Pin _ NEW[Route.PinRec _ [118, 121, 0, metal, bottom]]; net14p5: Route.Pin _ NEW[Route.PinRec _ [206, 209, 0, metal, bottom]]; net14 _ NEW[NetDefRec _ ["net14", FALSE, FALSE, FALSE, 0, LIST[net14p1, net14p2, net14p3, net14p4, net14p5]]]}; Net15: PROC [ ] RETURNS [net15: NetDef] ~ { net15p1: Route.Pin _ NEW[Route.PinRec _ [85, 88, 0, metal, bottom]]; net15p2: Route.Pin _ NEW[Route.PinRec _ [184, 187, 0, metal, bottom]]; net15 _ NEW[NetDefRec _ ["net15", FALSE, FALSE, FALSE, 0, LIST[net15p1, net15p2]]]}; Net16: PROC [ ] RETURNS [net16: NetDef] ~ { net16p1: Route.Pin _ NEW[Route.PinRec _ [107, 110, 0, metal, top]]; net16p2: Route.Pin _ NEW[Route.PinRec _ [294, 297, 0, metal, top]]; net16p3: Route.Pin _ NEW[Route.PinRec _ [470, 473, 0, metal, top]]; net16p4: Route.Pin _ NEW[Route.PinRec _ [294, 297, 0, metal, bottom]]; net16p5: Route.Pin _ NEW[Route.PinRec _ [316, 319, 0, metal, bottom]]; net16 _ NEW[NetDefRec _ ["net16", FALSE, FALSE, FALSE, 0, LIST[net16p1, net16p2, net16p3, net16p4, net16p5]]]}; Net17: PROC [ ] RETURNS [net17: NetDef] ~ { net17p1: Route.Pin _ NEW[Route.PinRec _ [129, 132, 0, metal, top]]; net17p2: Route.Pin _ NEW[Route.PinRec _ [206, 209, 0, metal, top]]; net17 _ NEW[NetDefRec _ ["net17", FALSE, FALSE, FALSE, 0, LIST[net17p1, net17p2]]]}; Net18: PROC [ ] RETURNS [net18: NetDef] ~ { net18p1: Route.Pin _ NEW[Route.PinRec _ [195, 198, 0, metal, bottom]]; net18p2: Route.Pin _ NEW[Route.PinRec _ [283, 286, 0, metal, bottom]]; net18p3: Route.Pin _ NEW[Route.PinRec _ [305, 308, 0, metal, bottom]]; net18 _ NEW[NetDefRec _ ["net18", FALSE, FALSE, FALSE, 0, LIST[net18p1, net18p2, net18p3]]]}; Net19: PROC [ ] RETURNS [net19: NetDef] ~ { net19p1: Route.Pin _ NEW[Route.PinRec _ [217, 220, 0, metal, top]]; net19p2: Route.Pin _ NEW[Route.PinRec _ [745, 748, 0, metal, top]]; net19p3: Route.Pin _ NEW[Route.PinRec _ [833, 836, 0, metal, top]]; net19p4: Route.Pin _ NEW[Route.PinRec _ [1218, 1221, 0, metal, top]]; net19p5: Route.Pin _ NEW[Route.PinRec _ [1339, 1342, 0, metal, top]]; net19p6: Route.Pin _ NEW[Route.PinRec _ [624, 627, 0, metal, bottom]]; net19p7: Route.Pin _ NEW[Route.PinRec _ [833, 836, 0, metal, bottom]]; net19p8: Route.Pin _ NEW[Route.PinRec _ [1306, 1309, 0, metal, bottom]]; net19p9: Route.Pin _ NEW[Route.PinRec _ [1339, 1342, 0, metal, bottom]]; net19 _ NEW[NetDefRec _ ["net19", FALSE, FALSE, FALSE, 0, LIST[net19p1, net19p2, net19p3, net19p4, net19p5, net19p6, net19p7, net19p8, net19p9]]]}; Net20: PROC [ ] RETURNS [net20: NetDef] ~ { net20p1: Route.Pin _ NEW[Route.PinRec _ [239, 242, 0, metal, top]]; net20p2: Route.Pin _ NEW[Route.PinRec _ [558, 561, 0, metal, top]]; net20p3: Route.Pin _ NEW[Route.PinRec _ [635, 638, 0, metal, top]]; net20p4: Route.Pin _ NEW[Route.PinRec _ [1031, 1034, 0, metal, top]]; net20p5: Route.Pin _ NEW[Route.PinRec _ [426, 429, 0, metal, bottom]]; net20p6: Route.Pin _ NEW[Route.PinRec _ [1064, 1067, 0, metal, bottom]]; net20p7: Route.Pin _ NEW[Route.PinRec _ [1163, 1166, 0, metal, bottom]]; net20p8: Route.Pin _ NEW[Route.PinRec _ [1185, 1188, 0, metal, bottom]]; net20p9: Route.Pin _ NEW[Route.PinRec _ [1482, 1485, 0, metal, bottom]]; net20p10: Route.Pin _ NEW[Route.PinRec _ [1581, 1584, 0, metal, bottom]]; net20p11: Route.Pin _ NEW[Route.PinRec _ [1702, 1705, 0, metal, bottom]]; net20p12: Route.Pin _ NEW[Route.PinRec _ [1823, 1826, 0, metal, bottom]]; net20 _ NEW[NetDefRec _ ["net20", FALSE, FALSE, FALSE, 0, LIST[net20p1, net20p2, net20p3, net20p4, net20p5, net20p6, net20p7, net20p8, net20p9, net20p10, net20p11, net20p12]]]}; Net21: PROC [ ] RETURNS [net21: NetDef] ~ { net21p1: Route.Pin _ NEW[Route.PinRec _ [250, 253, 0, metal, top]]; net21p2: Route.Pin _ NEW[Route.PinRec _ [261, 264, 0, metal, bottom]]; net21 _ NEW[NetDefRec _ ["net21", FALSE, FALSE, FALSE, 0, LIST[net21p1, net21p2]]]}; Net22: PROC [ ] RETURNS [net22: NetDef] ~ { net22p1: Route.Pin _ NEW[Route.PinRec _ [250, 253, 0, metal, bottom]]; net22p2: Route.Pin _ NEW[Route.PinRec _ [470, 473, 0, metal, bottom]]; net22p3: Route.Pin _ NEW[Route.PinRec _ [492, 495, 0, metal, bottom]]; net22 _ NEW[NetDefRec _ ["net22", FALSE, FALSE, FALSE, 0, LIST[net22p1, net22p2, net22p3]]]}; Net23: PROC [ ] RETURNS [net23: NetDef] ~ { net23p1: Route.Pin _ NEW[Route.PinRec _ [261, 264, 0, metal, top]]; net23p2: Route.Pin _ NEW[Route.PinRec _ [580, 583, 0, metal, top]]; net23p3: Route.Pin _ NEW[Route.PinRec _ [657, 660, 0, metal, top]]; net23p4: Route.Pin _ NEW[Route.PinRec _ [1009, 1012, 0, metal, top]]; net23p5: Route.Pin _ NEW[Route.PinRec _ [404, 407, 0, metal, bottom]]; net23p6: Route.Pin _ NEW[Route.PinRec _ [602, 605, 0, metal, bottom]]; net23p7: Route.Pin _ NEW[Route.PinRec _ [1207, 1210, 0, metal, bottom]]; net23 _ NEW[NetDefRec _ ["net23", FALSE, FALSE, FALSE, 0, LIST[net23p1, net23p2, net23p3, net23p4, net23p5, net23p6, net23p7]]]}; Net24: PROC [ ] RETURNS [net24: NetDef] ~ { net24p1: Route.Pin _ NEW[Route.PinRec _ [272, 275, 0, metal, top]]; net24p2: Route.Pin _ NEW[Route.PinRec _ [591, 594, 0, metal, top]]; net24p3: Route.Pin _ NEW[Route.PinRec _ [668, 671, 0, metal, top]]; net24p4: Route.Pin _ NEW[Route.PinRec _ [998, 1001, 0, metal, top]]; net24p5: Route.Pin _ NEW[Route.PinRec _ [393, 396, 0, metal, bottom]]; net24p6: Route.Pin _ NEW[Route.PinRec _ [1086, 1089, 0, metal, bottom]]; net24p7: Route.Pin _ NEW[Route.PinRec _ [1141, 1144, 0, metal, bottom]]; net24p8: Route.Pin _ NEW[Route.PinRec _ [1460, 1463, 0, metal, bottom]]; net24p9: Route.Pin _ NEW[Route.PinRec _ [1559, 1562, 0, metal, bottom]]; net24p10: Route.Pin _ NEW[Route.PinRec _ [1603, 1606, 0, metal, bottom]]; net24p11: Route.Pin _ NEW[Route.PinRec _ [1680, 1683, 0, metal, bottom]]; net24p12: Route.Pin _ NEW[Route.PinRec _ [1801, 1804, 0, metal, bottom]]; net24 _ NEW[NetDefRec _ ["net24", FALSE, FALSE, FALSE, 0, LIST[net24p1, net24p2, net24p3, net24p4, net24p5, net24p6, net24p7, net24p8, net24p9, net24p10, net24p11, net24p12]]]}; Net25: PROC [ ] RETURNS [net25: NetDef] ~ { net25p1: Route.Pin _ NEW[Route.PinRec _ [338, 341, 0, metal, top]]; net25p2: Route.Pin _ NEW[Route.PinRec _ [415, 418, 0, metal, bottom]]; net25 _ NEW[NetDefRec _ ["net25", FALSE, FALSE, FALSE, 0, LIST[net25p1, net25p2]]]}; Net26: PROC [ ] RETURNS [net26: NetDef] ~ { net26p1: Route.Pin _ NEW[Route.PinRec _ [360, 363, 0, metal, top]]; net26p2: Route.Pin _ NEW[Route.PinRec _ [382, 385, 0, metal, top]]; net26p3: Route.Pin _ NEW[Route.PinRec _ [360, 363, 0, metal, bottom]]; net26 _ NEW[NetDefRec _ ["net26", FALSE, FALSE, FALSE, 0, LIST[net26p1, net26p2, net26p3]]]}; Net27: PROC [ ] RETURNS [net27: NetDef] ~ { net27p1: Route.Pin _ NEW[Route.PinRec _ [415, 418, 0, metal, top]]; net27p2: Route.Pin _ NEW[Route.PinRec _ [492, 495, 0, metal, top]]; net27p3: Route.Pin _ NEW[Route.PinRec _ [778, 781, 0, metal, top]]; net27p4: Route.Pin _ NEW[Route.PinRec _ [668, 671, 0, metal, bottom]]; net27p5: Route.Pin _ NEW[Route.PinRec _ [943, 946, 0, metal, bottom]]; net27 _ NEW[NetDefRec _ ["net27", FALSE, FALSE, FALSE, 0, LIST[net27p1, net27p2, net27p3, net27p4, net27p5]]]}; Net28: PROC [ ] RETURNS [net28: NetDef] ~ { net28p1: Route.Pin _ NEW[Route.PinRec _ [426, 429, 0, metal, top]]; net28p2: Route.Pin _ NEW[Route.PinRec _ [734, 737, 0, metal, top]]; net28 _ NEW[NetDefRec _ ["net28", FALSE, FALSE, FALSE, 0, LIST[net28p1, net28p2]]]}; Net29: PROC [ ] RETURNS [net29: NetDef] ~ { net29p1: Route.Pin _ NEW[Route.PinRec _ [646, 649, 0, metal, top]]; net29p2: Route.Pin _ NEW[Route.PinRec _ [448, 451, 0, metal, bottom]]; net29 _ NEW[NetDefRec _ ["net29", FALSE, FALSE, FALSE, 0, LIST[net29p1, net29p2]]]}; Net30: PROC [ ] RETURNS [net30: NetDef] ~ { net30p1: Route.Pin _ NEW[Route.PinRec _ [481, 484, 0, metal, top]]; net30p2: Route.Pin _ NEW[Route.PinRec _ [712, 715, 0, metal, top]]; net30p3: Route.Pin _ NEW[Route.PinRec _ [866, 869, 0, metal, top]]; net30p4: Route.Pin _ NEW[Route.PinRec _ [1141, 1144, 0, metal, top]]; net30p5: Route.Pin _ NEW[Route.PinRec _ [1372, 1375, 0, metal, top]]; net30p6: Route.Pin _ NEW[Route.PinRec _ [657, 660, 0, metal, bottom]]; net30p7: Route.Pin _ NEW[Route.PinRec _ [800, 803, 0, metal, bottom]]; net30p8: Route.Pin _ NEW[Route.PinRec _ [1229, 1232, 0, metal, bottom]]; net30p9: Route.Pin _ NEW[Route.PinRec _ [1416, 1419, 0, metal, bottom]]; net30 _ NEW[NetDefRec _ ["net30", FALSE, FALSE, FALSE, 0, LIST[net30p1, net30p2, net30p3, net30p4, net30p5, net30p6, net30p7, net30p8, net30p9]]]}; Net31: PROC [ ] RETURNS [net31: NetDef] ~ { net31p1: Route.Pin _ NEW[Route.PinRec _ [514, 517, 0, metal, top]]; net31p2: Route.Pin _ NEW[Route.PinRec _ [888, 891, 0, metal, top]]; net31p3: Route.Pin _ NEW[Route.PinRec _ [976, 979, 0, metal, top]]; net31p4: Route.Pin _ NEW[Route.PinRec _ [734, 737, 0, metal, bottom]]; net31p5: Route.Pin _ NEW[Route.PinRec _ [778, 781, 0, metal, bottom]]; net31p6: Route.Pin _ NEW[Route.PinRec _ [899, 902, 0, metal, bottom]]; net31p7: Route.Pin _ NEW[Route.PinRec _ [921, 924, 0, metal, bottom]]; net31p8: Route.Pin _ NEW[Route.PinRec _ [998, 1001, 0, metal, bottom]]; net31 _ NEW[NetDefRec _ ["net31", FALSE, FALSE, FALSE, 0, LIST[net31p1, net31p2, net31p3, net31p4, net31p5, net31p6, net31p7, net31p8]]]}; Net32: PROC [ ] RETURNS [net32: NetDef] ~ { net32p1: Route.Pin _ NEW[Route.PinRec _ [569, 572, 0, metal, top]]; net32p2: Route.Pin _ NEW[Route.PinRec _ [591, 594, 0, metal, bottom]]; net32 _ NEW[NetDefRec _ ["net32", FALSE, FALSE, FALSE, 0, LIST[net32p1, net32p2]]]}; Net33: PROC [ ] RETURNS [net33: NetDef] ~ { net33p1: Route.Pin _ NEW[Route.PinRec _ [613, 616, 0, metal, bottom]]; net33p2: Route.Pin _ NEW[Route.PinRec _ [888, 891, 0, metal, bottom]]; net33p3: Route.Pin _ NEW[Route.PinRec _ [910, 913, 0, metal, bottom]]; net33 _ NEW[NetDefRec _ ["net33", FALSE, FALSE, FALSE, 0, LIST[net33p1, net33p2, net33p3]]]}; Net34: PROC [ ] RETURNS [net34: NetDef] ~ { net34p1: Route.Pin _ NEW[Route.PinRec _ [844, 847, 0, metal, top]]; net34p2: Route.Pin _ NEW[Route.PinRec _ [679, 682, 0, metal, bottom]]; net34 _ NEW[NetDefRec _ ["net34", FALSE, FALSE, FALSE, 0, LIST[net34p1, net34p2]]]}; Net35: PROC [ ] RETURNS [net35: NetDef] ~ { net35p1: Route.Pin _ NEW[Route.PinRec _ [789, 792, 0, metal, top]]; net35p2: Route.Pin _ NEW[Route.PinRec _ [690, 693, 0, metal, bottom]]; net35p3: Route.Pin _ NEW[Route.PinRec _ [756, 759, 0, metal, bottom]]; net35p4: Route.Pin _ NEW[Route.PinRec _ [954, 957, 0, metal, bottom]]; net35 _ NEW[NetDefRec _ ["net35", FALSE, FALSE, FALSE, 0, LIST[net35p1, net35p2, net35p3, net35p4]]]}; Net36: PROC [ ] RETURNS [net36: NetDef] ~ { net36p1: Route.Pin _ NEW[Route.PinRec _ [932, 935, 0, metal, top]]; net36p2: Route.Pin _ NEW[Route.PinRec _ [701, 704, 0, metal, bottom]]; net36p3: Route.Pin _ NEW[Route.PinRec _ [965, 968, 0, metal, bottom]]; net36 _ NEW[NetDefRec _ ["net36", FALSE, FALSE, FALSE, 0, LIST[net36p1, net36p2, net36p3]]]}; Net37: PROC [ ] RETURNS [net37: NetDef] ~ { net37p1: Route.Pin _ NEW[Route.PinRec _ [712, 715, 0, metal, bottom]]; net37p2: Route.Pin _ NEW[Route.PinRec _ [811, 814, 0, metal, bottom]]; net37 _ NEW[NetDefRec _ ["net37", FALSE, FALSE, FALSE, 0, LIST[net37p1, net37p2]]]}; Net38: PROC [ ] RETURNS [net38: NetDef] ~ { net38p1: Route.Pin _ NEW[Route.PinRec _ [723, 726, 0, metal, top]]; net38p2: Route.Pin _ NEW[Route.PinRec _ [767, 770, 0, metal, bottom]]; net38 _ NEW[NetDefRec _ ["net38", FALSE, FALSE, FALSE, 0, LIST[net38p1, net38p2]]]}; Net39: PROC [ ] RETURNS [net39: NetDef] ~ { net39p1: Route.Pin _ NEW[Route.PinRec _ [910, 913, 0, metal, top]]; net39p2: Route.Pin _ NEW[Route.PinRec _ [1086, 1089, 0, metal, top]]; net39p3: Route.Pin _ NEW[Route.PinRec _ [1108, 1111, 0, metal, top]]; net39p4: Route.Pin _ NEW[Route.PinRec _ [723, 726, 0, metal, bottom]]; net39p5: Route.Pin _ NEW[Route.PinRec _ [745, 748, 0, metal, bottom]]; net39p6: Route.Pin _ NEW[Route.PinRec _ [1009, 1012, 0, metal, bottom]]; net39p7: Route.Pin _ NEW[Route.PinRec _ [1119, 1122, 0, metal, bottom]]; net39 _ NEW[NetDefRec _ ["net39", FALSE, FALSE, FALSE, 0, LIST[net39p1, net39p2, net39p3, net39p4, net39p5, net39p6, net39p7]]]}; Net40: PROC [ ] RETURNS [net40: NetDef] ~ { net40p1: Route.Pin _ NEW[Route.PinRec _ [767, 770, 0, metal, top]]; net40p2: Route.Pin _ NEW[Route.PinRec _ [1075, 1078, 0, metal, top]]; net40p3: Route.Pin _ NEW[Route.PinRec _ [1097, 1100, 0, metal, top]]; net40 _ NEW[NetDefRec _ ["net40", FALSE, FALSE, FALSE, 0, LIST[net40p1, net40p2, net40p3]]]}; Net41: PROC [ ] RETURNS [net41: NetDef] ~ { net41p1: Route.Pin _ NEW[Route.PinRec _ [800, 803, 0, metal, top]]; net41p2: Route.Pin _ NEW[Route.PinRec _ [822, 825, 0, metal, bottom]]; net41 _ NEW[NetDefRec _ ["net41", FALSE, FALSE, FALSE, 0, LIST[net41p1, net41p2]]]}; Net42: PROC [ ] RETURNS [net42: NetDef] ~ { net42p1: Route.Pin _ NEW[Route.PinRec _ [811, 814, 0, metal, top]]; net42p2: Route.Pin _ NEW[Route.PinRec _ [1262, 1265, 0, metal, top]]; net42p3: Route.Pin _ NEW[Route.PinRec _ [1284, 1287, 0, metal, top]]; net42 _ NEW[NetDefRec _ ["net42", FALSE, FALSE, FALSE, 0, LIST[net42p1, net42p2, net42p3]]]}; Net43: PROC [ ] RETURNS [net43: NetDef] ~ { net43p1: Route.Pin _ NEW[Route.PinRec _ [855, 858, 0, metal, top]]; net43p2: Route.Pin _ NEW[Route.PinRec _ [899, 902, 0, metal, top]]; net43 _ NEW[NetDefRec _ ["net43", FALSE, FALSE, FALSE, 0, LIST[net43p1, net43p2]]]}; Net44: PROC [ ] RETURNS [net44: NetDef] ~ { net44p1: Route.Pin _ NEW[Route.PinRec _ [1614, 1617, 0, metal, top]]; net44p2: Route.Pin _ NEW[Route.PinRec _ [1636, 1639, 0, metal, top]]; net44p3: Route.Pin _ NEW[Route.PinRec _ [855, 858, 0, metal, bottom]]; net44 _ NEW[NetDefRec _ ["net44", FALSE, FALSE, FALSE, 0, LIST[net44p1, net44p2, net44p3]]]}; Net45: PROC [ ] RETURNS [net45: NetDef] ~ { net45p1: Route.Pin _ NEW[Route.PinRec _ [1020, 1023, 0, metal, top]]; net45p2: Route.Pin _ NEW[Route.PinRec _ [866, 869, 0, metal, bottom]]; net45 _ NEW[NetDefRec _ ["net45", FALSE, FALSE, FALSE, 0, LIST[net45p1, net45p2]]]}; Net46: PROC [ ] RETURNS [net46: NetDef] ~ { net46p1: Route.Pin _ NEW[Route.PinRec _ [921, 924, 0, metal, top]]; net46p2: Route.Pin _ NEW[Route.PinRec _ [943, 946, 0, metal, top]]; net46p3: Route.Pin _ NEW[Route.PinRec _ [1603, 1606, 0, metal, top]]; net46p4: Route.Pin _ NEW[Route.PinRec _ [1625, 1628, 0, metal, top]]; net46p5: Route.Pin _ NEW[Route.PinRec _ [1020, 1023, 0, metal, bottom]]; net46p6: Route.Pin _ NEW[Route.PinRec _ [1625, 1628, 0, metal, bottom]]; net46 _ NEW[NetDefRec _ ["net46", FALSE, FALSE, FALSE, 0, LIST[net46p1, net46p2, net46p3, net46p4, net46p5, net46p6]]]}; Net47: PROC [ ] RETURNS [net47: NetDef] ~ { net47p1: Route.Pin _ NEW[Route.PinRec _ [954, 957, 0, metal, top]]; net47p2: Route.Pin _ NEW[Route.PinRec _ [1251, 1254, 0, metal, top]]; net47p3: Route.Pin _ NEW[Route.PinRec _ [1273, 1276, 0, metal, top]]; net47p4: Route.Pin _ NEW[Route.PinRec _ [1031, 1034, 0, metal, bottom]]; net47p5: Route.Pin _ NEW[Route.PinRec _ [1108, 1111, 0, metal, bottom]]; net47 _ NEW[NetDefRec _ ["net47", FALSE, FALSE, FALSE, 0, LIST[net47p1, net47p2, net47p3, net47p4, net47p5]]]}; Net48: PROC [ ] RETURNS [net48: NetDef] ~ { net48p1: Route.Pin _ NEW[Route.PinRec _ [965, 968, 0, metal, top]]; net48p2: Route.Pin _ NEW[Route.PinRec _ [976, 979, 0, metal, bottom]]; net48 _ NEW[NetDefRec _ ["net48", FALSE, FALSE, FALSE, 0, LIST[net48p1, net48p2]]]}; Net49: PROC [ ] RETURNS [net49: NetDef] ~ { net49p1: Route.Pin _ NEW[Route.PinRec _ [1207, 1210, 0, metal, top]]; net49p2: Route.Pin _ NEW[Route.PinRec _ [1350, 1353, 0, metal, top]]; net49p3: Route.Pin _ NEW[Route.PinRec _ [987, 990, 0, metal, bottom]]; net49p4: Route.Pin _ NEW[Route.PinRec _ [1295, 1298, 0, metal, bottom]]; net49p5: Route.Pin _ NEW[Route.PinRec _ [1350, 1353, 0, metal, bottom]]; net49 _ NEW[NetDefRec _ ["net49", FALSE, FALSE, FALSE, 0, LIST[net49p1, net49p2, net49p3, net49p4, net49p5]]]}; Net50: PROC [ ] RETURNS [net50: NetDef] ~ { net50p1: Route.Pin _ NEW[Route.PinRec _ [1152, 1155, 0, metal, top]]; net50p2: Route.Pin _ NEW[Route.PinRec _ [1361, 1364, 0, metal, top]]; net50p3: Route.Pin _ NEW[Route.PinRec _ [1042, 1045, 0, metal, bottom]]; net50p4: Route.Pin _ NEW[Route.PinRec _ [1240, 1243, 0, metal, bottom]]; net50p5: Route.Pin _ NEW[Route.PinRec _ [1405, 1408, 0, metal, bottom]]; net50 _ NEW[NetDefRec _ ["net50", FALSE, FALSE, FALSE, 0, LIST[net50p1, net50p2, net50p3, net50p4, net50p5]]]}; Net51: PROC [ ] RETURNS [net51: NetDef] ~ { net51p1: Route.Pin _ NEW[Route.PinRec _ [1053, 1056, 0, metal, top]]; net51p2: Route.Pin _ NEW[Route.PinRec _ [1152, 1155, 0, metal, bottom]]; net51 _ NEW[NetDefRec _ ["net51", FALSE, FALSE, FALSE, 0, LIST[net51p1, net51p2]]]}; Net52: PROC [ ] RETURNS [net52: NetDef] ~ { net52p1: Route.Pin _ NEW[Route.PinRec _ [1053, 1056, 0, metal, bottom]]; net52p2: Route.Pin _ NEW[Route.PinRec _ [1174, 1177, 0, metal, bottom]]; net52p3: Route.Pin _ NEW[Route.PinRec _ [1196, 1199, 0, metal, bottom]]; net52p4: Route.Pin _ NEW[Route.PinRec _ [1493, 1496, 0, metal, bottom]]; net52p5: Route.Pin _ NEW[Route.PinRec _ [1570, 1573, 0, metal, bottom]]; net52p6: Route.Pin _ NEW[Route.PinRec _ [1713, 1716, 0, metal, bottom]]; net52p7: Route.Pin _ NEW[Route.PinRec _ [1834, 1837, 0, metal, bottom]]; net52 _ NEW[NetDefRec _ ["net52", FALSE, FALSE, FALSE, 0, LIST[net52p1, net52p2, net52p3, net52p4, net52p5, net52p6, net52p7]]]}; Net53: PROC [ ] RETURNS [net53: NetDef] ~ { net53p1: Route.Pin _ NEW[Route.PinRec _ [1306, 1309, 0, metal, top]]; net53p2: Route.Pin _ NEW[Route.PinRec _ [1075, 1078, 0, metal, bottom]]; net53 _ NEW[NetDefRec _ ["net53", FALSE, FALSE, FALSE, 0, LIST[net53p1, net53p2]]]}; Net54: PROC [ ] RETURNS [net54: NetDef] ~ { net54p1: Route.Pin _ NEW[Route.PinRec _ [1163, 1166, 0, metal, top]]; net54p2: Route.Pin _ NEW[Route.PinRec _ [1427, 1430, 0, metal, top]]; net54p3: Route.Pin _ NEW[Route.PinRec _ [1449, 1452, 0, metal, top]]; net54p4: Route.Pin _ NEW[Route.PinRec _ [1845, 1848, 0, metal, top]]; net54p5: Route.Pin _ NEW[Route.PinRec _ [1768, 1771, 0, metal, bottom]]; net54 _ NEW[NetDefRec _ ["net54", FALSE, FALSE, FALSE, 0, LIST[net54p1, net54p2, net54p3, net54p4, net54p5]]]}; Net55: PROC [ ] RETURNS [net55: NetDef] ~ { net55p1: Route.Pin _ NEW[Route.PinRec _ [1196, 1199, 0, metal, top]]; net55p2: Route.Pin _ NEW[Route.PinRec _ [1438, 1441, 0, metal, top]]; net55p3: Route.Pin _ NEW[Route.PinRec _ [1482, 1485, 0, metal, top]]; net55p4: Route.Pin _ NEW[Route.PinRec _ [1680, 1683, 0, metal, top]]; net55p5: Route.Pin _ NEW[Route.PinRec _ [1702, 1705, 0, metal, top]]; net55p6: Route.Pin _ NEW[Route.PinRec _ [1878, 1881, 0, metal, top]]; net55p7: Route.Pin _ NEW[Route.PinRec _ [1438, 1441, 0, metal, bottom]]; net55p8: Route.Pin _ NEW[Route.PinRec _ [1548, 1551, 0, metal, bottom]]; net55 _ NEW[NetDefRec _ ["net55", FALSE, FALSE, FALSE, 0, LIST[net55p1, net55p2, net55p3, net55p4, net55p5, net55p6, net55p7, net55p8]]]}; Net56: PROC [ ] RETURNS [net56: NetDef] ~ { net56p1: Route.Pin _ NEW[Route.PinRec _ [1460, 1463, 0, metal, top]]; net56p2: Route.Pin _ NEW[Route.PinRec _ [1251, 1254, 0, metal, bottom]]; net56 _ NEW[NetDefRec _ ["net56", FALSE, FALSE, FALSE, 0, LIST[net56p1, net56p2]]]}; Net57: PROC [ ] RETURNS [net57: NetDef] ~ { net57p1: Route.Pin _ NEW[Route.PinRec _ [1823, 1826, 0, metal, top]]; net57p2: Route.Pin _ NEW[Route.PinRec _ [1284, 1287, 0, metal, bottom]]; net57 _ NEW[NetDefRec _ ["net57", FALSE, FALSE, FALSE, 0, LIST[net57p1, net57p2]]]}; Net58: PROC [ ] RETURNS [net58: NetDef] ~ { net58p1: Route.Pin _ NEW[Route.PinRec _ [1317, 1320, 0, metal, top]]; net58p2: Route.Pin _ NEW[Route.PinRec _ [1691, 1694, 0, metal, top]]; net58p3: Route.Pin _ NEW[Route.PinRec _ [1713, 1716, 0, metal, top]]; net58 _ NEW[NetDefRec _ ["net58", FALSE, FALSE, FALSE, 0, LIST[net58p1, net58p2, net58p3]]]}; Net59: PROC [ ] RETURNS [net59: NetDef] ~ { net59p1: Route.Pin _ NEW[Route.PinRec _ [1416, 1419, 0, metal, top]]; net59p2: Route.Pin _ NEW[Route.PinRec _ [1361, 1364, 0, metal, bottom]]; net59 _ NEW[NetDefRec _ ["net59", FALSE, FALSE, FALSE, 0, LIST[net59p1, net59p2]]]}; Net60: PROC [ ] RETURNS [net60: NetDef] ~ { net60p1: Route.Pin _ NEW[Route.PinRec _ [1394, 1397, 0, metal, top]]; net60p2: Route.Pin _ NEW[Route.PinRec _ [1570, 1573, 0, metal, top]]; net60p3: Route.Pin _ NEW[Route.PinRec _ [1746, 1749, 0, metal, bottom]]; net60 _ NEW[NetDefRec _ ["net60", FALSE, FALSE, FALSE, 0, LIST[net60p1, net60p2, net60p3]]]}; Net61: PROC [ ] RETURNS [net61: NetDef] ~ { net61p1: Route.Pin _ NEW[Route.PinRec _ [1889, 1892, 0, metal, top]]; net61p2: Route.Pin _ NEW[Route.PinRec _ [1394, 1397, 0, metal, bottom]]; net61 _ NEW[NetDefRec _ ["net61", FALSE, FALSE, FALSE, 0, LIST[net61p1, net61p2]]]}; Net62: PROC [ ] RETURNS [net62: NetDef] ~ { net62p1: Route.Pin _ NEW[Route.PinRec _ [1405, 1408, 0, metal, top]]; net62p2: Route.Pin _ NEW[Route.PinRec _ [1834, 1837, 0, metal, top]]; net62p3: Route.Pin _ NEW[Route.PinRec _ [1636, 1639, 0, metal, bottom]]; net62p4: Route.Pin _ NEW[Route.PinRec _ [1757, 1760, 0, metal, bottom]]; net62 _ NEW[NetDefRec _ ["net62", FALSE, FALSE, FALSE, 0, LIST[net62p1, net62p2, net62p3, net62p4]]]}; Net63: PROC [ ] RETURNS [net63: NetDef] ~ { net63p1: Route.Pin _ NEW[Route.PinRec _ [1471, 1474, 0, metal, top]]; net63p2: Route.Pin _ NEW[Route.PinRec _ [1779, 1782, 0, metal, top]]; net63p3: Route.Pin _ NEW[Route.PinRec _ [1801, 1804, 0, metal, top]]; net63p4: Route.Pin _ NEW[Route.PinRec _ [1900, 1903, 0, metal, top]]; net63p5: Route.Pin _ NEW[Route.PinRec _ [1537, 1540, 0, metal, bottom]]; net63p6: Route.Pin _ NEW[Route.PinRec _ [1647, 1650, 0, metal, bottom]]; net63p7: Route.Pin _ NEW[Route.PinRec _ [1779, 1782, 0, metal, bottom]]; net63 _ NEW[NetDefRec _ ["net63", FALSE, FALSE, FALSE, 0, LIST[net63p1, net63p2, net63p3, net63p4, net63p5, net63p6, net63p7]]]}; Net64: PROC [ ] RETURNS [net64: NetDef] ~ { net64p1: Route.Pin _ NEW[Route.PinRec _ [1735, 1738, 0, metal, top]]; net64p2: Route.Pin _ NEW[Route.PinRec _ [1471, 1474, 0, metal, bottom]]; net64 _ NEW[NetDefRec _ ["net64", FALSE, FALSE, FALSE, 0, LIST[net64p1, net64p2]]]}; Net65: PROC [ ] RETURNS [net65: NetDef] ~ { net65p1: Route.Pin _ NEW[Route.PinRec _ [1493, 1496, 0, metal, top]]; net65p2: Route.Pin _ NEW[Route.PinRec _ [1691, 1694, 0, metal, bottom]]; net65 _ NEW[NetDefRec _ ["net65", FALSE, FALSE, FALSE, 0, LIST[net65p1, net65p2]]]}; Net66: PROC [ ] RETURNS [net66: NetDef] ~ { net66p1: Route.Pin _ NEW[Route.PinRec _ [1515, 1518, 0, metal, top]]; net66p2: Route.Pin _ NEW[Route.PinRec _ [1537, 1540, 0, metal, top]]; net66 _ NEW[NetDefRec _ ["net66", FALSE, FALSE, FALSE, 0, LIST[net66p1, net66p2]]]}; Net67: PROC [ ] RETURNS [net67: NetDef] ~ { net67p1: Route.Pin _ NEW[Route.PinRec _ [1867, 1870, 0, metal, top]]; net67p2: Route.Pin _ NEW[Route.PinRec _ [1515, 1518, 0, metal, bottom]]; net67p3: Route.Pin _ NEW[Route.PinRec _ [1845, 1848, 0, metal, bottom]]; net67 _ NEW[NetDefRec _ ["net67", FALSE, FALSE, FALSE, 0, LIST[net67p1, net67p2, net67p3]]]}; Net68: PROC [ ] RETURNS [net68: NetDef] ~ { net68p1: Route.Pin _ NEW[Route.PinRec _ [1526, 1529, 0, metal, top]]; net68p2: Route.Pin _ NEW[Route.PinRec _ [1548, 1551, 0, metal, top]]; net68p3: Route.Pin _ NEW[Route.PinRec _ [1581, 1584, 0, metal, top]]; net68p4: Route.Pin _ NEW[Route.PinRec _ [1911, 1914, 0, metal, top]]; net68p5: Route.Pin _ NEW[Route.PinRec _ [1526, 1529, 0, metal, bottom]]; net68p6: Route.Pin _ NEW[Route.PinRec _ [1658, 1661, 0, metal, bottom]]; net68 _ NEW[NetDefRec _ ["net68", FALSE, FALSE, FALSE, 0, LIST[net68p1, net68p2, net68p3, net68p4, net68p5, net68p6]]]}; Net69: PROC [ ] RETURNS [net69: NetDef] ~ { net69p1: Route.Pin _ NEW[Route.PinRec _ [1658, 1661, 0, metal, top]]; net69p2: Route.Pin _ NEW[Route.PinRec _ [1592, 1595, 0, metal, bottom]]; net69 _ NEW[NetDefRec _ ["net69", FALSE, FALSE, FALSE, 0, LIST[net69p1, net69p2]]]}; Net70: PROC [ ] RETURNS [net70: NetDef] ~ { net70p1: Route.Pin _ NEW[Route.PinRec _ [1856, 1859, 0, metal, top]]; net70p2: Route.Pin _ NEW[Route.PinRec _ [1735, 1738, 0, metal, bottom]]; net70 _ NEW[NetDefRec _ ["net70", FALSE, FALSE, FALSE, 0, LIST[net70p1, net70p2]]]}; Net71: PROC [ ] RETURNS [net71: NetDef] ~ { net71p1: Route.Pin _ NEW[Route.PinRec _ [1746, 1749, 0, metal, top]]; net71p2: Route.Pin _ NEW[Route.PinRec _ [1812, 1815, 0, metal, bottom]]; net71 _ NEW[NetDefRec _ ["net71", FALSE, FALSE, FALSE, 0, LIST[net71p1, net71p2]]]}; Net72: PROC [ ] RETURNS [net72: NetDef] ~ { net72p1: Route.Pin _ NEW[Route.PinRec _ [1768, 1771, 0, metal, top]]; net72p2: Route.Pin _ NEW[Route.PinRec _ [1790, 1793, 0, metal, top]]; net72 _ NEW[NetDefRec _ ["net72", FALSE, FALSE, FALSE, 0, LIST[net72p1, net72p2]]]}; nets _ LIST[Net1[], Net2[], Net3[], Net4[], Net5[], Net6[], Net7[], Net8[], Net9[], Net10[], Net11[], Net12[], Net13[], Net14[], Net15[], Net16[], Net17[], Net18[], Net19[], Net20[], Net21[], Net22[], Net23[], Net24[], Net25[], Net26[], Net27[], Net28[], Net29[], Net30[], Net31[], Net32[], Net33[], Net34[], Net35[], Net36[], Net37[], Net38[], Net39[], Net40[], Net41[], Net42[], Net43[], Net44[], Net45[], Net46[], Net47[], Net48[], Net49[], Net50[], Net51[], Net52[], Net53[], Net54[], Net55[], Net56[], Net57[], Net58[], Net59[], Net60[], Net61[], Net62[], Net63[], Net64[], Net65[], Net66[], Net67[], Net68[], Net69[], Net70[], Net71[], Net72[]]; }; RunType: TYPE = {base, shiftLeft, shiftRight}; runType: RunType _ base; NetDef: TYPE = REF NetDefRec; NetDefRec: TYPE = RECORD [ name: Rope.ROPE, exitLeftOrBottom, exitRightOrTop: BOOL _ FALSE, mayExit: BOOL _ TRUE, trunkSize: CD.Number _ 0, netData: LIST OF Route.Pin _ NIL]; name: Rope.ROPE _ "RouteTestDDE"; technology: CD.Technology _ CD.FetchTechnology[$cmosB]; metal: CD.Layer _ CD.FetchLayer[technology, $met]; metal2: CD.Layer _ CD.FetchLayer[technology, $met2]; rules: Route.DesignRulesParameters _ Route.DefaultDesignRulesParameters[technology, metal2, metal, horizontal]; nets: LIST OF NetDef _ MakeDDENets[]; object: CD.Object _ Route.Channel[EnumerateChannelNets, -11*8, 2022*8, rules, name, BrokenNet, NIL, nets].object; design: CD.Design _ CDOps.CreateDesign[technology]; [ ] _ CDCells.IncludeOb[design: design, ob: object]; [ ] _ CDIO.WriteDesign[design, name]; END. €RouteTestDDE.mesa Copyright Σ 1985, 1987 by Xerox Corporation. All rights reserved. Last Edited by: Preas, May 18, 1988 12:38:34 pm PDT Christian Le Cocq December 2, 1987 12:47:46 pm PST PROC [channelData: REF, eachNet: EachChannelNetProc]; PROC [channelData, netData: REF, eachPin: EachChannelPinProc]; [channelData, netData: REF, sourceNet: Label, regionNumber, numberOfRegions: NAT] RETURNS [newLabel: Label] Κk˜Icodešœ™KšœB™Bšœ0Οk™3Kšœ/™2—K™š œ˜ Kšœ œ6˜G—K˜šΠln œœ˜K˜Kšœœ œ˜6Kšœ˜K˜—šΟnœ$˜8Kšœœ™5Kšœœœ œ˜+šœœ˜Kšœ˜Kšœpœ˜‚Kšœ˜Kšœ˜ K˜——šŸœ$˜8Kšœœ™>Kšœœœ œ ˜*šœœ˜Kšœ˜Kšœœ˜'Kšœœœ œœœœ œœœ˜‚KšœQ˜QKšœ˜Kšœ˜ K˜——šŸ œ˜"Kšœœ3œœ™kKšœs˜sK˜—š Ÿ œœœœœ ˜7K˜šŸœœœ˜)Kšœœ+˜BKšœœ+˜BKšœœ+˜BKšœœ+˜BKšœœ-˜DKšœœ.˜EKš œœœœœœ4˜oK˜—šŸœœœ˜)Kšœœ(˜?Kšœœ.˜EKšœœ.˜EKš œœœœœœ˜X—K˜šŸœœœ˜)Kšœœ)˜@Kšœœ+˜BKšœœ+˜BKšœœ+˜BKšœœ+˜BKšœœ.˜EKšœœ.˜EKš œœœœœœ<˜xK˜—šŸœœœ˜)Kšœœ)˜@Kšœœ.˜EKš œœœœœœ˜PK˜—šŸœœœ˜)Kšœœ+˜BKšœœ+˜BKšœœ+˜BKšœœ+˜BKšœœ,˜CKšœœ,˜CKš œœœœœœ4˜pK˜—šŸœœœ˜)Kšœœ)˜@Kšœœ+˜BKšœœ+˜BKšœœ-˜DKšœœ-˜DKšœœ.˜EKšœœ.˜EKšœœ.˜EKšœœ.˜EKšœœ.˜FKšœœ0˜HKšœœ0˜HKš œœœœœœg˜£K˜—šŸœœœ˜)Kšœœ+˜BKšœœ,˜CKšœœ,˜CKšœœ.˜EKš œœœœœœ$˜`K˜—šŸœœœ˜)Kšœœ)˜@Kšœœ+˜BKšœœ+˜BKšœœ-˜DKšœœ-˜DKšœœ.˜EKšœœ.˜EKšœœ.˜EKšœœ.˜EKšœœ.˜FKšœœ0˜HKšœœ0˜HKš œœœœœœg˜£K˜—šŸœœœ˜)Kšœœ)˜@Kšœœ+˜BKšœœ+˜BKšœœ,˜CKšœœ.˜EKšœœ.˜EKš œœœœœœ4˜pK˜—šŸœœœ˜+Kšœœ)˜AKšœœ+˜CKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ)˜AKšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ.˜FKšœœ.˜FKš œœœœœœC˜K˜—šŸœœœ˜+Kšœœ+˜CKšœœ,˜DKšœœ.˜FKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ)˜AKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ,˜DKšœœ.˜FKšœœ.˜FKš œœœœœœ1˜oK˜—šŸœœœ˜+Kšœœ,˜DKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ.˜FKšœœ.˜FKš œœœœœœ1˜oK˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ.˜FKšœœ.˜FKšœœ.˜FKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ-˜EKšœœ-˜EKšœœ.˜FKšœœ.˜FKšœœ0˜HKšœœ0˜HKš œœœœœœU˜“K˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ-˜EKšœœ.˜FKšœœ0˜HKšœœ0˜HKšœœ0˜HKšœœ0˜HKšœœ0˜IKšœœ0˜IKšœœ0˜IKš œœœœœœs˜±K˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ.˜FKšœœ.˜FKšœœ.˜FKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ-˜EKšœœ.˜FKšœœ.˜FKšœœ0˜HKš œœœœœœC˜K˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ,˜DKšœœ.˜FKšœœ0˜HKšœœ0˜HKšœœ0˜HKšœœ0˜HKšœœ0˜IKšœœ0˜IKšœœ0˜IKš œœœœœœs˜±K˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ.˜FKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ.˜FKšœœ.˜FKš œœœœœœ1˜oK˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ-˜EKšœœ-˜EKšœœ.˜FKšœœ.˜FKšœœ0˜HKšœœ0˜HKš œœœœœœU˜“K˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ+˜CKšœœ.˜FKšœœ.˜FKšœœ.˜FKšœœ.˜FKšœœ/˜GKš œœœœœœL˜ŠK˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ.˜FKšœœ.˜FKšœœ.˜FKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKšœœ.˜FKšœœ.˜FKš œœœœœœ(˜fK˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKšœœ.˜FKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ.˜FKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ-˜EKšœœ-˜EKšœœ.˜FKšœœ.˜FKšœœ0˜HKšœœ0˜HKš œœœœœœC˜K˜—šŸœœœ˜+Kšœœ+˜CKšœœ-˜EKšœœ-˜EKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ-˜EKšœœ-˜EKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ.˜FKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ-˜EKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ+˜CKšœœ+˜CKšœœ-˜EKšœœ-˜EKšœœ0˜HKšœœ0˜HKš œœœœœœ:˜xK˜—šŸœœœ˜+Kšœœ+˜CKšœœ-˜EKšœœ-˜EKšœœ0˜HKšœœ0˜HKš œœœœœœ1˜oK˜—šŸœœœ˜+Kšœœ+˜CKšœœ.˜FKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ.˜FKšœœ0˜HKšœœ0˜HKš œœœœœœ1˜oK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ0˜HKšœœ0˜HKšœœ0˜HKš œœœœœœ1˜oK˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ0˜HKšœœ0˜HKšœœ0˜HKšœœ0˜HKšœœ0˜HKšœœ0˜HKšœœ0˜HKš œœœœœœC˜K˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ0˜HKš œœœœœœ1˜oK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ0˜HKšœœ0˜HKš œœœœœœL˜ŠK˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ-˜EKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ0˜HKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ0˜HKšœœ0˜HKš œœœœœœ(˜fK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ0˜HKšœœ0˜HKšœœ0˜HKš œœœœœœC˜K˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKšœœ0˜HKš œœœœœœ˜]K˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ-˜EKšœœ0˜HKšœœ0˜HKš œœœœœœ:˜xK˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ0˜HKš œœœœœœ˜TK˜—šŸœœœ˜+Kšœœ-˜EKšœœ-˜EKš œœœœœœ˜TK˜—Kšœœ€˜‹K˜K˜K˜—K˜Kšœ œ!˜.Kšœ˜K˜Kšœœœ ˜šœ œœ˜Kšœ œ˜Kšœ"œœ˜/Kšœ œœ˜Kšœ œ ˜Kšœ œœ œ˜"—K˜Kšœ œ˜!Kšœ œœ˜7Kšœœ œ˜2Kšœœ œ˜4Kšœo˜oK˜K˜Kšœœœ Ÿ œ˜%KšœœUœ˜qKšœœ)˜3Kšœ4˜4K˜šœœ˜'K˜—Kš˜—…—†”₯£