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
DIRECTORY
CD, CDDebug, CDIO, Commander, Convert, DABasics, Rope, Route, RoutePrivate;
RouteTestDDE: CEDAR PROGRAM
IMPORTS CD, CDDebug, CDIO, Commander, Convert, Rope, Route
= BEGIN
EnumerateChannelNets: Route.EnumerateChannelNetsProc ~ {
PROC [channelData: REF, eachNet: EachChannelNetProc];
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 ~ {
PROC [channelData, netData: REF, eachPin: EachChannelPinProc];
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 ~ {
[channelData, netData: REF, sourceNet: Label, regionNumber, numberOfRegions: NAT] RETURNS [newLabel: Label]
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 ← shiftRight;
NetDef: TYPE = REF NetDefRec;
NetDefRec: TYPE = RECORD [
name: Rope.ROPE,
exitLeftOrBottom, exitRightOrTop: BOOLFALSE,
mayExit: BOOLTRUE,
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];
RouteDDE: Commander.CommandProc ~{
nets: LIST OF NetDef ← MakeDDENets[];
object: CD.Object ← Route.Channel[EnumerateChannelNets, -12, 2022*8+76, rules, name, BrokenNet, NIL, nets].object;
design: CD.Design ← CDDebug.Draw[object, technology].dummyDesign;
design.mutability ← editable;
[ ] ← CDIO.WriteDesign[design, name];
};
Commander.Register["RouteDDE", RouteDDE];
END.