home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / o / ops5.zip / MYW.OPS < prev    next >
Text File  |  1992-05-31  |  512KB  |  9,030 lines

  1. (literalize unit unit-name file-name)
  2.  
  3. (literalize pin net-name pin-name external-net-name external-pin-name pin-left-x pin-left-y fixed-pin pin-x pin-y pin-layer pin-layer-constraint pin-channel-side pin-is-attached)
  4.  
  5. (literalize channel channel-bottom-left-x channel-bottom-left-y channel-top-right-x channel-top-right-y channel-width channel-length no-of-left-pins no-of-right-pins no-of-bottom-pins no-of-top-pins right-fixed left-fixed bottom-fixed top-fixed channel-type no-of-fixed-sides)
  6.  
  7. (literalize net net-name parent-name net-no-of-pins net-left-x net-left-y net-right-x net-right-y no-of-left-pins no-of-right-pins no-of-top-pins no-of-bottom-pins net-is-routed left-most-pin-name right-most-pin-name bottom-most-pin-name top-most-pin-name fixed-net net-layer external-net-name no-of-inter max-no-of-via)
  8.  
  9. (literalize layer-info layer-name layer-order layer-priority)
  10.  
  11. (literalize context present previous saved)
  12.  
  13. (literalize ff net-name pin-name grid-layer grid-x grid-y came-from can-chng-layer)
  14.  
  15. (literalize next-net-to-be-routed net-name no-of-attached-pins criteria)
  16.  
  17. (literalize to-be-routed net-name no-of-attached-pins)
  18.  
  19. (literalize occupied x y m)
  20.  
  21. (literalize constraint constraint-type constraint-relation channel-side constraint-reason net-name-1 net-name-2 pin-name-1 pin-name-2 seg-id-1 seg-id-2)
  22.  
  23. (literalize congestion direction coordinate no-of-nets extra-nets como)
  24.  
  25. (literalize intersection net-name direction min max)
  26.  
  27. (literalize horizontal min max com compo commo layer status min-net max-net net-name pin-name)
  28.  
  29. (literalize vertical min max com compo commo layer status min-net max-net net-name pin-name)
  30.  
  31. (literalize horizontal-s net-name min max com id top-count bot-count sum difference absolute side)
  32.  
  33. (literalize vertical-s net-name min max com id top-count bot-count sum difference absolute side)
  34.  
  35. (literalize total net-name row-col coor level-pins total-pins cong min-xy max-xy last-pin last-xy nets)
  36.  
  37. (literalize tree net-name orientation com min max count id)
  38.  
  39. (vector-attribute nets)
  40.  
  41. (p p327
  42.     (context ^present delete-total)
  43.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max>) }
  44.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
  45.     (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> } ^max { <hmax> >= <gx> > <min> } ^com 1 ^id <id>)
  46.   - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <> <id>)
  47.     (pin ^net-name <nn> ^pin-name <pn> ^pin-x { >= <hmin> <= <hmax> } ^pin-channel-side bottom)
  48.     (constraint ^constraint-type vertical ^seg-id-1 <id>)
  49.     (total ^net-name <> <nn>)
  50.   - (total-verti <nn>)
  51.   -->
  52.     (remove <t>)
  53. )
  54.  
  55. (p p328
  56.     (context ^present delete-total)
  57.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max>) }
  58.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
  59.     (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> < <max> } ^max { <hmax> >= <gx> } ^com <lr> ^id <id>)
  60.   - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <lr> ^id <> <id>)
  61.     (last-row <lr>)
  62.     (pin ^net-name <nn> ^pin-name <pn> ^pin-x { >= <hmin> <= <hmax> } ^pin-channel-side top)
  63.     (constraint ^constraint-type vertical ^seg-id-2 <id>)
  64.     (total ^net-name <> <nn>)
  65.   - (total-verti <nn>)
  66.   -->
  67.     (remove <t>)
  68. )
  69.  
  70. (p p329
  71.     (context ^present delete-total)
  72.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max>) }
  73.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
  74.     (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy> > <min> } ^com 1 ^id <id>)
  75.   - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <> <id>)
  76.     (pin ^net-name <nn> ^pin-name <pn> ^pin-y { >= <vmin> <= <vmax> } ^pin-channel-side left)
  77.     (constraint ^constraint-type horizontal ^seg-id-1 <id>)
  78.     (total ^net-name <> <nn>)
  79.   - (total-verti <nn>)
  80.   -->
  81.     (remove <t>)
  82. )
  83.  
  84. (p p330
  85.     (context ^present delete-total)
  86.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max>) }
  87.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
  88.     (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> < <max> } ^max { <vmax> >= <gy> } ^com <lc> ^id <id>)
  89.   - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <lc> ^id <> <id>)
  90.     (last-col <lc>)
  91.     (pin ^net-name <nn> ^pin-name <pn> ^pin-y { >= <vmin> <= <vmax> } ^pin-channel-side right)
  92.     (constraint ^constraint-type horizontal ^seg-id-2 <id>)
  93.     (total ^net-name <> <nn>)
  94.   - (total-verti <nn>)
  95.   -->
  96.     (remove <t>)
  97. )
  98.  
  99. (p p331
  100.     { <c> (context ^present modify-total) }
  101.   -->
  102.     (modify <c> ^present delete-total)
  103. )
  104.  
  105. (p p332
  106.     { <c> (context ^present delete-total) }
  107.   - (total)
  108.   -->
  109.     (remove <c>)
  110.     (make context ^previous find-no-of-pins-on-a-row-col)
  111. )
  112.  
  113. (p p333
  114.     { <c> (context ^present extend-total) }
  115.     (last-row <lr>)
  116.   -->
  117.     (make maximum-total 0 0 0 1 0 <lr> 0)
  118.     (make merge-direction left)
  119.     (modify <c> ^present merge)
  120.     (make eliminate-total)
  121. )
  122.  
  123. (p p334
  124.     { <c> (context ^present delete-total) }
  125.   -->
  126.     (modify <c> ^present extend-total)
  127. )
  128.  
  129. (p p335
  130.     (context ^present modify-total)
  131.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  132.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
  133.     (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> } ^max { <hmax> >= <gx> } ^com 1 ^id <id> ^absolute <a> ^sum <s>)
  134.   - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <> <id>)
  135.   - (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <hmin> ^max-xy <hmax> ^last-pin checked)
  136.     (pin ^net-name <nn> ^pin-name <pn> ^pin-x { >= <hmin> <= <hmax> } ^pin-channel-side bottom)
  137.   -->
  138.     (make (substr <t> 1 inf) ^min-xy <hmin> ^max-xy <hmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <hmin> <hmax>)
  139. )
  140.  
  141. (p p336
  142.     (context ^present modify-total)
  143.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  144.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
  145.     (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> } ^max { <hmax> >= <gx> } ^com <lr> ^id <id> ^absolute <a> ^sum <s>)
  146.   - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <lr> ^id <> <id>)
  147.   - (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <hmin> ^max-xy <hmax> ^last-pin checked)
  148.     (last-row <lr>)
  149.     (pin ^net-name <nn> ^pin-name <pn> ^pin-x { >= <hmin> <= <hmax> } ^pin-channel-side top)
  150.   -->
  151.     (make (substr <t> 1 inf) ^min-xy <hmin> ^max-xy <hmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <hmin> <hmax>)
  152. )
  153.  
  154. (p p337
  155.     (context ^present modify-total)
  156.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  157.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
  158.     (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy> } ^com 1 ^id <id> ^absolute <a> ^sum <s>)
  159.   - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <> <id>)
  160.   - (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <vmin> ^max-xy <vmax> ^last-pin checked)
  161.     (pin ^net-name <nn> ^pin-name <pn> ^pin-y { >= <vmin> <= <vmax> } ^pin-channel-side left)
  162.   -->
  163.     (make (substr <t> 1 inf) ^min-xy <vmin> ^max-xy <vmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <vmin> <vmax>)
  164. )
  165.  
  166. (p p338
  167.     (context ^present modify-total)
  168.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  169.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
  170.     (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy> } ^com <lc> ^id <id> ^absolute <a> ^sum <s>)
  171.   - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <lc> ^id <> <id>)
  172.   - (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <vmin> ^max-xy <vmax> ^last-pin checked)
  173.     (last-col <lc>)
  174.     (pin ^net-name <nn> ^pin-name <pn> ^pin-y { >= <vmin> <= <vmax> } ^pin-channel-side right)
  175.   -->
  176.     (make (substr <t> 1 inf) ^min-xy <vmin> ^max-xy <vmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <vmin> <vmax>)
  177. )
  178.  
  179. (p p339
  180.     (context ^present modify-total)
  181.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  182.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
  183.     (horizontal-s ^net-name <nn> ^min 1 ^max { <hmax> >= <gx> } ^com <com> ^id <id> ^absolute <a> ^sum <s>)
  184.   - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <garb> ^id <> <id>)
  185.   - (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy 1 ^max-xy <hmax> ^last-pin checked)
  186.     (pin ^net-name <nn> ^pin-name <pn> ^pin-x 0 ^pin-y <com> ^pin-channel-side left)
  187.   -->
  188.     (make (substr <t> 1 inf) ^min-xy 1 ^max-xy <hmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> 1 <hmax>)
  189. )
  190.  
  191. (p p340
  192.     (context ^present modify-total)
  193.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  194.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
  195.     (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> } ^max <lc> ^com <com> ^id <id> ^absolute <a> ^sum <s>)
  196.   - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <garb> ^id <> <id>)
  197.   - (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <hmin> ^max-xy <lc> ^last-pin checked)
  198.     (pin ^net-name <nn> ^pin-name <pn> ^pin-y <com> ^pin-channel-side right)
  199.     (last-col <lc>)
  200.   -->
  201.     (make (substr <t> 1 inf) ^min-xy <hmin> ^max-xy <lc> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <hmin> <lc>)
  202. )
  203.  
  204. (p p341
  205.     (context ^present modify-total)
  206.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  207.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
  208.     (vertical-s ^net-name <nn> ^min 1 ^max { <vmax> >= <gy> } ^com <com> ^id <id> ^absolute <a> ^sum <s>)
  209.   - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <garb> ^id <> <id>)
  210.   - (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy 1 ^max-xy <vmax> ^last-pin checked)
  211.     (pin ^net-name <nn> ^pin-name <pn> ^pin-x <com> ^pin-channel-side bottom)
  212.   -->
  213.     (make (substr <t> 1 inf) ^min-xy 1 ^max-xy <vmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> 1 <vmax>)
  214. )
  215.  
  216. (p p342
  217.     (context ^present modify-total)
  218.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  219.     (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
  220.     (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max <lr> ^com <com> ^id <id> ^absolute <a> ^sum <s>)
  221.   - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <garb> ^id <> <id>)
  222.   - (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <vmin> ^max-xy <lr> ^last-pin checked)
  223.     (pin ^net-name <nn> ^pin-name <pn> ^pin-x <com> ^pin-channel-side top)
  224.     (last-row <lr>)
  225.   -->
  226.     (make (substr <t> 1 inf) ^min-xy <vmin> ^max-xy <lr> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <vmin> <lr>)
  227. )
  228.  
  229. (p p343
  230.     (context ^present delete-total)
  231.     { <t> (total ^net-name <nn> ^row-col <rc> ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  232.     (total ^net-name <nn> ^row-col <rc> ^coor <y> ^last-pin checked)
  233.   -->
  234.     (remove <t>)
  235. )
  236.  
  237. (p p344
  238.     (context ^present delete-total)
  239.     { <t> (total ^net-name <nn> ^row-col <rc> ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  240.   -->
  241.     (remove <t>)
  242. )
  243.  
  244. (p p345
  245.     (context ^present delete-total)
  246.     { <t> (total ^net-name <nn> ^row-col <rc> ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  247.     (net ^net-name <nn> ^net-no-of-pins 2)
  248.   -->
  249.     (modify <t> ^last-pin checked ^nets <nn> <min> <max>)
  250. )
  251.  
  252. (p p346
  253.     (context ^present delete-total)
  254.     { <t> (total ^net-name <nn> ^row-col <rc> ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  255.   - (total ^last-pin checked)
  256.   -->
  257.     (modify <t> ^last-pin checked ^nets <nn> <min> <max>)
  258. )
  259.  
  260. (p p347
  261.     (context ^present delete-total)
  262.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max>) }
  263.     (last-col <lc>)
  264.     (horizontal-s ^net-name { <nn1> <> <nn> } ^min 1 ^max { >= <min> <> <lc> } ^com <y> ^id <=> 1)
  265.     (pin ^net-name <nn1> ^pin-x 0 ^pin-y <y>)
  266.   - (pin ^net-name <nn> ^pin-y <y> ^pin-channel-side right)
  267.   -->
  268.     (remove <t>)
  269. )
  270.  
  271. (p p348
  272.     (context ^present delete-total)
  273.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <tmin> ^max-xy <max>) }
  274.     (last-col <lc>)
  275.     (horizontal-s ^net-name { <nn1> <> <nn> } ^min 1 ^max { <maxs> <> <lc> } ^com <y> ^id <=> 1)
  276.     (pin ^net-name <nn1> ^pin-x 0 ^pin-y <y>)
  277.     (vertical ^net-name <nn> ^min <= <y> ^max >= <y> ^com { <min> > 1 <= <maxs> })
  278.   - (vertical ^net-name <nn> ^min <= <y> ^max >= <y> ^com < <min>)
  279.     { <h> (horizontal ^net-name <nn1> ^min 0 ^max { <hmax> < <min> } ^com <y> ^layer <lay>) }
  280.     { <ff> (ff ^net-name <nn1> ^grid-x <hmax> ^grid-y <y> ^grid-layer <lay> ^came-from west) }
  281.     { <h1> (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <y> ^layer <lay>) }
  282.   - (pin ^net-name <nn> ^pin-y <y>)
  283.   - (vertical ^status nil ^net-name { <> <nn1> <> nil } ^min <= <y> ^max >= <y> ^com <min> ^layer <lay>)
  284.   - (horizontal ^status nil ^net-name { <> <nn1> <> nil } ^min <= <min> ^max >= <min> ^com <y> ^layer <lay>)
  285.   -->
  286.     (remove <t>)
  287.     (modify <h> ^max <min>)
  288.     (modify <h1> ^min <min> ^min-net <nn1>)
  289.     (modify <ff> ^grid-x <min> ^can-chng-layer nil)
  290. )
  291.  
  292. (p p349
  293.     (context ^present delete-total)
  294.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max>) }
  295.     (last-col <lc>)
  296.     (horizontal-s ^net-name { <nn1> <> <nn> } ^min { <= <max> <> 1 } ^max <lc> ^com <y> ^id <=> 1)
  297.     (pin ^net-name <nn1> ^pin-y <y> ^pin-channel-side right)
  298.   - (pin ^net-name <nn> ^pin-y <y> ^pin-channel-side left)
  299.   -->
  300.     (remove <t>)
  301. )
  302.  
  303. (p p350
  304.     (context ^present delete-total)
  305.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <tmax>) }
  306.     (last-col <lc>)
  307.     (horizontal-s ^net-name { <nn1> <> <nn> } ^min { <mins> <> 1 } ^max <lc> ^com <y> ^id <=> 1)
  308.     (pin ^net-name <nn1> ^pin-y <y> ^pin-channel-side right)
  309.     (vertical ^net-name <nn> ^min <= <y> ^max >= <y> ^com { <max> >= <mins> < <lc> })
  310.   - (vertical ^net-name <nn> ^min <= <y> ^max >= <y> ^com > <max>)
  311.     { <h> (horizontal ^net-name <nn1> ^min { <hmin> > <max> } ^max <garb> ^com <y> ^layer <lay>) }
  312.     { <ff> (ff ^net-name <nn1> ^grid-x <hmin> ^grid-y <y> ^grid-layer <lay> ^came-from east) }
  313.     { <h1> (horizontal ^net-name nil ^min < <max> ^max <hmin> ^com <y> ^layer <lay>) }
  314.   - (pin ^net-name <nn> ^pin-y <y>)
  315.   - (vertical ^status nil ^net-name { <> <nn1> <> nil } ^min <= <y> ^max >= <y> ^com <max> ^layer <lay>)
  316.   - (horizontal ^status nil ^net-name { <> <nn1> <> nil } ^min <= <max> ^max >= <max> ^com <y> ^layer <lay>)
  317.   -->
  318.     (remove <t>)
  319.     (modify <h> ^min <max>)
  320.     (modify <h1> ^max <max> ^max-net <nn1>)
  321.     (modify <ff> ^grid-x <max> ^can-chng-layer nil)
  322. )
  323.  
  324. (p p351
  325.     (context ^present delete-total)
  326.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max>) }
  327.     (last-row <lr>)
  328.     (vertical-s ^net-name { <nn1> <> <nn> } ^min 1 ^max { >= <min> <> <lr> } ^com <x> ^id <=> 1)
  329.     (pin ^net-name <nn1> ^pin-x <x> ^pin-channel-side bottom)
  330.   - (pin ^net-name <nn> ^pin-x <x> ^pin-channel-side top)
  331.   -->
  332.     (remove <t>)
  333. )
  334.  
  335. (p p352
  336.     (context ^present delete-total)
  337.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <tmin> ^max-xy <max>) }
  338.     (last-row <lr>)
  339.     (vertical-s ^net-name { <nn1> <> <nn> } ^min 1 ^max { <maxs> <> <lr> } ^com <x> ^id <=> 1)
  340.     (pin ^net-name <nn1> ^pin-x <x> ^pin-channel-side bottom)
  341.     (horizontal ^net-name <nn> ^min <= <x> ^max <x> ^com { <min> > 1 <= <maxs> })
  342.   - (horizontal ^net-name <nn> ^min <= <x> ^max <x> ^com < <min>)
  343.     { <v> (vertical ^net-name <nn1> ^min 0 ^max { <vmax> < <min> } ^com <x> ^layer <lay>) }
  344.     { <ff> (ff ^net-name <nn1> ^grid-x <x> ^grid-y <vmax> ^grid-layer <lay> ^came-from south) }
  345.     { <v1> (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <x> ^layer <lay>) }
  346.   - (pin ^net-name <nn> ^pin-x <x>)
  347.   - (vertical ^status nil ^net-name { <> <nn1> <> nil } ^min <= <min> ^max >= <min> ^com <x>)
  348.   - (horizontal ^status nil ^net-name { <> <nn1> <> nil } ^min <= <x> ^max >= <x> ^com <min>)
  349.   -->
  350.     (remove <t>)
  351.     (modify <v> ^max <min>)
  352.     (modify <v1> ^min <min> ^min-net <nn1>)
  353.     (modify <ff> ^grid-y <min> ^can-chng-layer nil)
  354. )
  355.  
  356. (p p353
  357.     (context ^present delete-total)
  358.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max>) }
  359.     (last-row <lr>)
  360.     (vertical-s ^net-name { <nn1> <> <nn> } ^min { <= <max> <> 1 } ^max <lr> ^com <x> ^id <=> 1)
  361.     (pin ^net-name <nn1> ^pin-x <x> ^pin-channel-side top)
  362.   - (pin ^net-name <nn> ^pin-x <x> ^pin-channel-side bottom)
  363.   -->
  364.     (remove <t>)
  365. )
  366.  
  367. (p p354
  368.     (context ^present delete-total)
  369.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <tmax>) }
  370.     (last-row <lr>)
  371.     (vertical-s ^net-name { <nn1> <> <nn> } ^min { <mins> <> 1 } ^max <lr> ^com <x> ^id <=> 1)
  372.     (pin ^net-name <nn1> ^pin-x <x> ^pin-channel-side top)
  373.     (horizontal ^net-name <nn> ^min <= <x> ^max >= <x> ^com { <max> >= <mins> < <lr> })
  374.   - (horizontal ^net-name <nn> ^min <= <x> ^max >= <x> ^com > <max>)
  375.     { <v> (vertical ^net-name <nn1> ^min { <vmin> > <max> } ^max <garb> ^com <x> ^layer <lay>) }
  376.     { <ff> (ff ^net-name <nn1> ^grid-x <x> ^grid-y <vmin> ^grid-layer <lay> ^came-from north) }
  377.     { <v1> (vertical ^net-name nil ^min < <vmin> ^max <vmin> ^com <x> ^layer <lay>) }
  378.   - (pin ^net-name <nn> ^pin-x <x>)
  379.   - (vertical ^status nil ^net-name { <> <nn1> <> nil } ^min <= <max> ^max >= <max> ^com <x>)
  380.   - (horizontal ^status nil ^net-name { <> <nn1> <> nil } ^min <= <x> ^max >= <x> ^com <max>)
  381.   -->
  382.     (remove <t>)
  383.     (modify <v> ^min <max>)
  384.     (modify <v1> ^max <max> ^max-net <nn1>)
  385.     (modify <ff> ^grid-y <max> ^can-chng-layer nil)
  386. )
  387.  
  388. (p p355
  389.     (context ^present extend-total)
  390.   - (switch-box)
  391.     { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-xy <id>) }
  392.     (last-row > <y>)
  393.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <id>)
  394.   - (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com <y>)
  395.   - (horizontal ^net-name <nn> ^min <= <min> ^max >= <min> ^com <y>)
  396.   - (horizontal ^net-name <nn> ^min <= <max> ^max >= <max> ^com <y>)
  397.   - (horizontal ^net-name <nn> ^min >= <min> ^max <= <max> ^com <y>)
  398.     (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com > <y>)
  399.   - (ff ^net-name <nn> ^grid-x { >= <min> <= <max> } ^grid-y <y> ^pin-name >= 1000)
  400.   -->
  401.     (modify <t> ^coor (compute <y> + 1))
  402. )
  403.  
  404. (p p356
  405.     (context ^present extend-total)
  406.   - (switch-box)
  407.     { <t> (total ^net-name <nn> ^row-col row ^coor { <y> > 0 } ^min-xy <min> ^max-xy <max> ^last-xy <id>) }
  408.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <lr> ^id <id>)
  409.     (last-row <lr>)
  410.   - (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com <y>)
  411.   - (horizontal ^net-name <nn> ^min <= <min> ^max >= <min> ^com <y>)
  412.   - (horizontal ^net-name <nn> ^min <= <max> ^max >= <max> ^com <y>)
  413.   - (horizontal ^net-name <nn> ^min >= <min> ^max <= <max> ^com <y>)
  414.     (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com < <y>)
  415.   - (ff ^net-name <nn> ^grid-x { >= <min> <= <max> } ^grid-y <y> ^pin-name >= 1000)
  416.   -->
  417.     (modify <t> ^coor (compute <y> - 1))
  418. )
  419.  
  420. (p p357
  421.     (context ^present extend-total)
  422.   - (switch-box)
  423.     { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-xy <id>) }
  424.     (last-col > <x>)
  425.     (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <id>)
  426.   - (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com <x>)
  427.   - (vertical ^net-name <nn> ^min <= <min> ^max >= <min> ^com <x>)
  428.   - (vertical ^net-name <nn> ^min <= <max> ^max >= <max> ^com <x>)
  429.   - (vertical ^net-name <nn> ^min >= <min> ^max <= <max> ^com <x>)
  430.     (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com > <x>)
  431.   - (ff ^net-name <nn> ^grid-x <x> ^grid-y { >= <min> <= <max> } ^pin-name >= 1000)
  432.   -->
  433.     (modify <t> ^coor (compute <x> + 1))
  434. )
  435.  
  436. (p p358
  437.     (context ^present extend-total)
  438.   - (switch-box)
  439.     { <t> (total ^net-name <nn> ^row-col col ^coor { <x> > 0 } ^min-xy <min> ^max-xy <max> ^last-xy <id>) }
  440.     (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <lc> ^id <id>)
  441.     (last-col <lc>)
  442.   - (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com <x>)
  443.   - (vertical ^net-name <nn> ^min <= <min> ^max >= <min> ^com <x>)
  444.   - (vertical ^net-name <nn> ^min <= <max> ^max >= <max> ^com <x>)
  445.   - (vertical ^net-name <nn> ^min >= <min> ^max <= <max> ^com <x>)
  446.     (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com < <x>)
  447.   - (ff ^net-name <nn> ^grid-x <x> ^grid-y { >= <min> <= <max> } ^pin-name >= 1000)
  448.   -->
  449.     (modify <t> ^coor (compute <x> - 1))
  450. )
  451.  
  452. (p p359
  453.     (context ^present extend-total)
  454.     (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-xy <id>)
  455.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <id>)
  456.     (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com <y>)
  457.     { <ff> (ff ^net-name <nn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y { <gy> < <y> } ^grid-layer <lay> ^pin-name <pn>) }
  458.     { <v> (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { <vmax> >= <y> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  459.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <y> ^max >= <y> ^com <gx> ^layer <lay>)
  460.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <y> ^layer <lay>)
  461.   -->
  462.     (make vertical ^min <y> ^max <vmax> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn> ^max-net <mn>)
  463.     (modify <v> ^max <gy> ^max-net <nn>)
  464.     (make vertical ^min <gy> ^max <y> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^net-name <nn> ^pin-name <pn>)
  465.     (modify <ff> ^grid-y <y> ^came-from south ^can-chng-layer nil)
  466. )
  467.  
  468. (p p360
  469.     (context ^present extend-total)
  470.     (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-xy <id>)
  471.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <lr> ^id <id>)
  472.     (last-row <lr>)
  473.     (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com <y>)
  474.     { <ff> (ff ^net-name <nn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y { <gy> > <y> } ^grid-layer <lay> ^pin-name <pn>) }
  475.     { <v> (vertical ^net-name nil ^min { <vmin> <= <y> } ^max { <vmax> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  476.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <y> ^max >= <y> ^com <gx> ^layer <lay>)
  477.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <y> ^layer <lay>)
  478.   -->
  479.     (make vertical ^min <gy> ^max <vmax> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn> ^max-net <mn>)
  480.     (modify <v> ^max <y> ^max-net <nn>)
  481.     (make vertical ^min <y> ^max <gy> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^net-name <nn> ^pin-name <pn>)
  482.     (modify <ff> ^grid-y <y> ^came-from north ^can-chng-layer nil)
  483. )
  484.  
  485. (p p361
  486.     (context ^present extend-total)
  487.     (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-xy <id>)
  488.     (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <id>)
  489.     (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com <x>)
  490.     { <ff> (ff ^net-name <nn> ^grid-x { <gx> < <x> } ^grid-y { <gy> >= <min> <= <max> } ^grid-layer <lay> ^pin-name <pn>) }
  491.     { <v> (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> >= <x> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  492.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <x> ^max >= <x> ^com <gy> ^layer <lay>)
  493.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <x> ^layer <lay>)
  494.   -->
  495.     (make horizontal ^min <x> ^max <hmax> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn> ^max-net <mn>)
  496.     (modify <v> ^max <gx> ^max-net <nn>)
  497.     (make horizontal ^min <gx> ^max <x> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^net-name <nn> ^pin-name <pn>)
  498.     (modify <ff> ^grid-x <x> ^came-from west ^can-chng-layer nil)
  499. )
  500.  
  501. (p p362
  502.     (context ^present extend-total)
  503.     (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-xy <id>)
  504.     (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <lc> ^id <id>)
  505.     (last-col <lc>)
  506.     (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com <x>)
  507.     { <ff> (ff ^net-name <nn> ^grid-x { <gx> > <x> } ^grid-y { <gy> >= <min> <= <max> } ^grid-layer <lay> ^pin-name <pn>) }
  508.     { <v> (horizontal ^net-name nil ^min { <hmin> <= <x> } ^max { <hmax> >= <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  509.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <x> ^max >= <x> ^com <gy> ^layer <lay>)
  510.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <x> ^layer <lay>)
  511.   -->
  512.     (make horizontal ^min <gx> ^max <hmax> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn> ^max-net <mn>)
  513.     (modify <v> ^max <x> ^max-net <nn>)
  514.     (make horizontal ^min <x> ^max <gx> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^net-name <nn> ^pin-name <pn>)
  515.     (modify <ff> ^grid-x <x> ^came-from east ^can-chng-layer nil)
  516. )
  517.  
  518. (p p490
  519.     { <c> (context ^present separate) }
  520.   -->
  521.     (modify <c> ^present reconnect)
  522. )
  523.  
  524. (p p491
  525.     { <c> (context ^present reconnect) }
  526.   -->
  527.     (modify <c> ^present form-verti)
  528. )
  529.  
  530. (p p492
  531.     { <c> (context ^present form-verti) }
  532.   -->
  533.     (modify <c> ^present partial-route)
  534. )
  535.  
  536. (p p493
  537.     { <c> (context ^present partial-route) }
  538.   -->
  539.     (modify <c> ^present extend-pins)
  540. )
  541.  
  542. (p p494
  543.     { <c1> (context ^present extend-pins) }
  544.   -->
  545.     (modify <c1> ^present nil ^previous extend-pins)
  546. )
  547.  
  548. (p p495
  549.     { <c1> (context ^previous extend-pins) }
  550.   -->
  551.     (make switch-box)
  552.     (make context ^present propagate-constraint)
  553.     (remove <c1>)
  554. )
  555.  
  556. (p p496
  557.     { <c1> (context ^previous extend-pins) }
  558.     (channel ^no-of-left-pins 0 ^no-of-right-pins 0)
  559.   -->
  560.     (remove <c1>)
  561.     (make context ^present find-no-of-pins-on-a-row-col)
  562. )
  563.  
  564. (p p497
  565.     { <c1> (context ^previous extend-pins) }
  566.     (channel ^no-of-bottom-pins 0 ^no-of-top-pins 0)
  567.   -->
  568.     (remove <c1>)
  569.     (make context ^present find-no-of-pins-on-a-row-col)
  570. )
  571.  
  572. (p p498
  573.     (context ^previous propagate-constraint)
  574.     (net ^net-is-routed <> yes)
  575.   -->
  576.     (remove 1)
  577.     (make context ^present lshape1)
  578. )
  579.  
  580. (p p499
  581.     (context ^present lshape1)
  582.   -->
  583.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  584. )
  585.  
  586. (p p500
  587.     { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  588.   - (total)
  589.   - (extend-ff-tried)
  590.   -->
  591.     (remove <c>)
  592.     (make context ^present lshape4)
  593. )
  594.  
  595. (p p501
  596.     { <c> (context ^present lshape4) }
  597.   -->
  598.     (remove <c>)
  599.     (make extend-ff-tried)
  600.     (make context ^present extend-ff)
  601. )
  602.  
  603. (p p502
  604.     { <c> (context ^present extend-ff) }
  605.   -->
  606.     (remove <c>)
  607.     (make context ^previous extend-ff)
  608. )
  609.  
  610. (p p503
  611.     { <c> (context ^previous extend-ff) }
  612.   - (extended-ff)
  613.   -->
  614.     (remove <c>)
  615.     (make context ^present find-no-of-pins-on-a-row-col)
  616. )
  617.  
  618. (p p504
  619.     { <c> (context ^previous extend-ff) }
  620.     { <e> (extended-ff) }
  621.     { <ex> (extend-ff-tried) }
  622.   -->
  623.     (remove <c> <e> <ex>)
  624.     (make context ^present find-no-of-pins-on-a-row-col)
  625.     (make goal cleanup extended-ff)
  626. )
  627.  
  628. (p p505
  629.     (context ^previous find-no-of-pins-on-a-row-col)
  630.   - (total)
  631.     (extend-ff-tried)
  632.   - (total-verti)
  633.   -->
  634.     (remove 1)
  635.     (make context ^present find-no-of-vcg-hcg)
  636.     (make goal cleanup counted-verti)
  637. )
  638.  
  639. (p p506
  640.     (context ^previous find-no-of-pins-on-a-row-col)
  641.   - (total)
  642.     (total-verti)
  643.   - (verti-has-loop)
  644.   -->
  645.     (remove 1)
  646.     (make verti-has-loop)
  647.     (make context ^present choose-between-total-verti)
  648. )
  649.  
  650. (p p507
  651.     (context ^previous find-no-of-pins-on-a-row-col)
  652.   - (total)
  653.     (total-verti)
  654.     (verti-has-loop)
  655.   -->
  656.     (make context ^present extend-h-v-s)
  657.     (make goal cleanup total-verti)
  658.     (make goal cleanup counted-verti)
  659.     (make goal cleanup extend-ff-tried)
  660.     (remove 1 3)
  661. )
  662.  
  663. (p p508
  664.     (context ^present choose-between-total-verti)
  665.   - (total-verti ^4 > 0)
  666.   -->
  667.     (modify 1 ^present extend-h-v-s)
  668.     (make goal cleanup counted-verti)
  669. )
  670.  
  671. (p p509
  672.     (context ^previous find-no-of-vcg-hcg)
  673.   - (total-verti)
  674.   -->
  675.     (remove 1)
  676.     (make context ^present extend-h-v-s)
  677. )
  678.  
  679. (p p510
  680.     (context ^present loose-constraint)
  681.   -->
  682.     (make context ^present lshape2)
  683.     (remove 1)
  684. )
  685.  
  686. (p p511
  687.     (context ^present lshape2)
  688.   -->
  689.     (modify 1 ^present lshape3)
  690. )
  691.  
  692. (p p512
  693.     (context ^present lshape3)
  694.   -->
  695.     (remove 1)
  696.     (make context ^present random0)
  697. )
  698.  
  699. (p p513
  700.     (context ^present random0)
  701.   -->
  702.     (remove 1)
  703.     (make context ^present random1)
  704. )
  705.  
  706. (p p514
  707.     (context ^present remove-routed-net-segments)
  708.   - (net ^net-is-routed <> yes)
  709.   - (horizontal ^net-name <> nil ^status nil)
  710.   - (vertical ^net-name <> nil ^status nil)
  711.   -->
  712.     (write (crlf) | Finished with the routing.|)
  713.     (halt)
  714. )
  715.  
  716. (p p1
  717.     (context ^present separate)
  718.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  719.     (vertical-s ^net-name <nn> ^com <min>)
  720.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
  721.     (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side top)
  722.   - (horizontal-s ^net-name <nn> ^min <= <px> ^max >= <px> ^id <> <id>)
  723.     (pin ^net-name <> <nn> ^pin-x <min> ^pin-channel-side top)
  724.   - (pin ^net-name <nn> ^pin-x <px> ^pin-channel-side bottom)
  725.   - (pin ^net-name <nn> ^pin-x { < <px> > <min> })
  726.     (pin ^net-name <nn> ^pin-x > <px> ^pin-channel-side top)
  727.   -->
  728.     (modify <h> ^min <px>)
  729.     (make horizontal-s ^net-name <nn> ^min <min> ^max <px> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  730. )
  731.  
  732. (p p2
  733.     (context ^present separate)
  734.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  735.     (vertical-s ^net-name <nn> ^com <min>)
  736.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
  737.     (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side bottom)
  738.   - (horizontal-s ^net-name <nn> ^min <= <px> ^max >= <px> ^id <> <id>)
  739.     (pin ^net-name <> <nn> ^pin-x <min> ^pin-channel-side bottom)
  740.   - (pin ^net-name <nn> ^pin-x <px> ^pin-channel-side top)
  741.   - (pin ^net-name <nn> ^pin-x { < <px> > <min> })
  742.     (pin ^net-name <nn> ^pin-x > <px> ^pin-channel-side bottom)
  743.   -->
  744.     (modify <h> ^min <px>)
  745.     (make horizontal-s ^net-name <nn> ^min <min> ^max <px> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  746. )
  747.  
  748. (p p3
  749.     (context ^present separate)
  750.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  751.     (vertical-s ^net-name <nn> ^com <max>)
  752.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
  753.     (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side top)
  754.   - (horizontal-s ^net-name <nn> ^min <= <px> ^max >= <px> ^id <> <id>)
  755.     (pin ^net-name <> <nn> ^pin-x <max> ^pin-channel-side top)
  756.   - (pin ^net-name <nn> ^pin-x <px> ^pin-channel-side bottom)
  757.   - (pin ^net-name <nn> ^pin-x { < <max> > <px> })
  758.     (pin ^net-name <nn> ^pin-x < <px> ^pin-channel-side top)
  759.   -->
  760.     (modify <h> ^max <px>)
  761.     (make horizontal-s ^net-name <nn> ^min <px> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  762. )
  763.  
  764. (p p4
  765.     (context ^present separate)
  766.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  767.     (vertical-s ^net-name <nn> ^com <max>)
  768.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
  769.     (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side bottom)
  770.   - (horizontal-s ^net-name <nn> ^min <= <px> ^max >= <px> ^id <> <id>)
  771.     (pin ^net-name <> <nn> ^pin-x <max> ^pin-channel-side bottom)
  772.   - (pin ^net-name <nn> ^pin-x <px> ^pin-channel-side top)
  773.   - (pin ^net-name <nn> ^pin-x { < <max> > <px> })
  774.     (pin ^net-name <nn> ^pin-x < <px> ^pin-channel-side bottom)
  775.   -->
  776.     (modify <h> ^max <px>)
  777.     (make horizontal-s ^net-name <nn> ^min <px> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  778. )
  779.  
  780. (p p5
  781.     (context ^present reconnect)
  782.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
  783.     { <h2> (horizontal-s ^net-name <nn> ^min <min1> ^max <min> ^id <id2>) }
  784.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
  785.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
  786.   - (pin ^pin-x <max> ^pin-channel-side bottom)
  787.   - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
  788.     (last-row <lr>)
  789.   - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  790.   - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  791.   -->
  792.     (remove <h1>)
  793.     (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <max> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  794.     (modify <h2> ^max <max>)
  795. )
  796.  
  797. (p p6
  798.     (context ^present reconnect)
  799.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
  800.     { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <max1> ^id <id2>) }
  801.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
  802.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
  803.   - (pin ^pin-x <min> ^pin-channel-side bottom)
  804.   - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
  805.     (last-row <lr>)
  806.   - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  807.   - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  808.   -->
  809.     (remove <h1>)
  810.     (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <min> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  811.     (modify <h2> ^min <min>)
  812. )
  813.  
  814. (p p7
  815.     (context ^present reconnect)
  816.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
  817.     { <h2> (horizontal-s ^net-name <nn> ^min <min1> ^max <min> ^id <id2>) }
  818.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
  819.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
  820.   - (pin ^pin-x <max> ^pin-channel-side top)
  821.   - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
  822.     (last-row <lr>)
  823.   - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  824.   - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  825.   -->
  826.     (remove <h1>)
  827.     (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <max> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  828.     (modify <h2> ^max <max>)
  829. )
  830.  
  831. (p p8
  832.     (context ^present reconnect)
  833.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
  834.     { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <max1> ^id <id2>) }
  835.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
  836.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
  837.   - (pin ^pin-x <min> ^pin-channel-side top)
  838.   - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
  839.     (last-row <lr>)
  840.   - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  841.   - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  842.   -->
  843.     (remove <h1>)
  844.     (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <min> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  845.     (modify <h2> ^min <min>)
  846. )
  847.  
  848. (p p9
  849.     (context ^present reconnect)
  850.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com>)
  851.     (horizontal-s ^net-name <nn> ^min { <min1> >= <min> } ^max { <max1> <= <max> } ^com <> <com>)
  852.     { <v> (vertical-s ^net-name <nn> ^com { <com1> >= <min1> <= <max1> }) }
  853.     (pin ^net-name <> <nn> ^pin-x <com1>)
  854.     (congestion ^direction col ^coordinate { <px> >= <min1> <= <max1> })
  855.   - (pin ^net-name <> <nn> ^pin-x <px>)
  856.   - (vertical-s ^com <px>)
  857.   -->
  858.     (modify <v> ^com <px>)
  859. )
  860.  
  861. (p p10
  862.     (context ^present reconnect)
  863.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com>)
  864.     (horizontal-s ^net-name <nn> ^min { <min1> >= <min> <= <max> } ^max { <max1> >= <max> } ^com <> <com>)
  865.     { <v> (vertical-s ^net-name <nn> ^com { <com1> >= <min1> <= <max> }) }
  866.     (pin ^net-name <> <nn> ^pin-x <com1>)
  867.     (congestion ^direction col ^coordinate { <px> >= <min1> <= <max> })
  868.   - (pin ^net-name <> <nn> ^pin-x <px>)
  869.   - (vertical-s ^com <px>)
  870.   -->
  871.     (modify <v> ^com <px>)
  872. )
  873.  
  874. (p p11
  875.     (context ^present reconnect)
  876.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom> ^id <id>)
  877.     (horizontal-s ^net-name <nn> ^min { <min1> >= <min> } ^max { <max1> <= <max> } ^com <> <hcom>)
  878.   - (vertical-s ^net-name <nn> ^com { >= <min1> <= <max1> })
  879.     { <v> (vertical-s ^net-name <nn> ^com { <vcom> < <min1> }) }
  880.   - (horizontal-s ^net-name <nn> ^min <= <vcom> ^max >= <vcom> ^id <> <id>)
  881.   -->
  882.     (modify <v> ^com <min1>)
  883. )
  884.  
  885. (p p12
  886.     (context ^present reconnect)
  887.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom> ^id <id>)
  888.     (horizontal-s ^net-name <nn> ^min { <min1> >= <min> } ^max { <max1> <= <max> } ^com <> <hcom>)
  889.   - (vertical-s ^net-name <nn> ^com { >= <min1> <= <max1> })
  890.     { <v> (vertical-s ^net-name <nn> ^com { <vcom> > <max1> }) }
  891.   - (horizontal-s ^net-name <nn> ^min <= <vcom> ^max >= <vcom> ^id <> <id>)
  892.   -->
  893.     (modify <v> ^com <max1>)
  894. )
  895.  
  896. (p p13
  897.     (context ^present reconnect)
  898.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom> ^id <id>)
  899.     (horizontal-s ^net-name <nn> ^min { <min1> >= <min> <= <max> } ^max { <max1> >= <max> } ^com <> <hcom>)
  900.   - (vertical-s ^net-name <nn> ^com { >= <min1> <= <max> })
  901.     { <v> (vertical-s ^net-name <nn> ^com { <vcom> < <min1> }) }
  902.   - (horizontal-s ^net-name <nn> ^min <= <vcom> ^max >= <vcom> ^id <> <id>)
  903.   -->
  904.     (modify <v> ^com <min1>)
  905. )
  906.  
  907. (p p14
  908.     (context ^present reconnect)
  909.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom> ^id <id>)
  910.     (horizontal-s ^net-name <nn> ^min { <min1> >= <min> <= <max> } ^max { <max1> >= <max> } ^com <> <hcom>)
  911.   - (vertical-s ^net-name <nn> ^com { >= <min1> <= <max> })
  912.     { <v> (vertical-s ^net-name <nn> ^com { <vcom> > <max> }) }
  913.   - (horizontal-s ^net-name <nn> ^min <= <vcom> ^max >= <vcom> ^id <> <id>)
  914.   -->
  915.     (modify <v> ^com <max>)
  916. )
  917.  
  918. (p p15
  919.     (context ^present reconnect)
  920.     (horizontal-s ^net-name <nn> ^min <min1> ^max <max1> ^id <id1>)
  921.     { <h> (horizontal-s ^net-name <nn> ^min <max1> ^max <max2> ^com <com> ^id <id2>) }
  922.     (horizontal-s ^net-name <nn> ^min <max2> ^max <max3> ^id <id3>)
  923.   - (horizontal-s ^net-name <nn> ^id { <> <id1> <> <id2> <> <id3> })
  924.     (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com <max1>)
  925.     (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com <max2>)
  926.   -->
  927.     (modify <h> ^min <min1> ^max <max3>)
  928. )
  929.  
  930. (p p16
  931.     (context ^present reconnect)
  932.     (vertical-s ^net-name <nn> ^min <min1> ^max <max1> ^id <id1>)
  933.     { <h> (vertical-s ^net-name <nn> ^min <max1> ^max <max2> ^com <com> ^id <id2>) }
  934.     (vertical-s ^net-name <nn> ^min <max2> ^max <max3> ^id <id3>)
  935.   - (vertical-s ^net-name <nn> ^id { <> <id1> <> <id2> <> <id3> })
  936.     (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com <max1>)
  937.     (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com <max2>)
  938.   -->
  939.     (modify <h> ^min <min1> ^max <max3>)
  940. )
  941.  
  942. (p p17
  943.     (context ^present separate)
  944.     { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  945.     (horizontal-s ^net-name <nn> ^min <hmin> ^max <com> ^com <max>)
  946.     (pin ^net-name <nn> ^pin-y { <py> > <min> < <max> } ^pin-channel-side right)
  947.   - (pin ^net-name <nn> ^pin-x > <com> ^pin-y { > <py> <= <max> })
  948.   - (pin ^net-name <nn> ^pin-x <com> ^pin-channel-side top)
  949.   - (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <py> < <max> })
  950.   - (horizontal-s ^net-name <nn> ^min <com> ^max <hmax> ^com <max>)
  951.   -->
  952.     (modify <v> ^max <py>)
  953.     (make vertical-s ^net-name <nn> ^min <py> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  954. )
  955.  
  956. (p p18
  957.     (context ^present separate)
  958.     { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  959.     (horizontal-s ^net-name <nn> ^min <com> ^max <hmax> ^com <max>)
  960.     (pin ^net-name <nn> ^pin-y { <py> > <min> < <max> } ^pin-channel-side left)
  961.   - (pin ^net-name <nn> ^pin-x < <com> ^pin-y { > <py> <= <max> })
  962.   - (pin ^net-name <nn> ^pin-x <com> ^pin-channel-side top)
  963.   - (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <py> < <max> })
  964.   - (horizontal-s ^net-name <nn> ^min <hmin> ^max <com> ^com <max>)
  965.   -->
  966.     (modify <v> ^max <py>)
  967.     (make vertical-s ^net-name <nn> ^min <py> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  968. )
  969.  
  970. (p p19
  971.     (context ^present separate)
  972.     { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  973.     (horizontal-s ^net-name <nn> ^min <hmin> ^max <com> ^com <min>)
  974.     (pin ^net-name <nn> ^pin-y { <py> > <min> < <max> } ^pin-channel-side right)
  975.   - (pin ^net-name <nn> ^pin-x > <com> ^pin-y { < <py> >= <min> })
  976.   - (pin ^net-name <nn> ^pin-x <com> ^pin-channel-side bottom)
  977.   - (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <min> < <py> })
  978.   - (horizontal-s ^net-name <nn> ^min <com> ^max <hmax> ^com <min>)
  979.   -->
  980.     (modify <v> ^min <py>)
  981.     (make vertical-s ^net-name <nn> ^min <min> ^max <py> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  982. )
  983.  
  984. (p p20
  985.     (context ^present separate)
  986.     { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  987.     (horizontal-s ^net-name <nn> ^min <com> ^max <hmax> ^com <min>)
  988.     (pin ^net-name <nn> ^pin-y { <py> > <min> < <max> } ^pin-channel-side left)
  989.   - (pin ^net-name <nn> ^pin-x < <com> ^pin-y { < <py> >= <min> })
  990.   - (pin ^net-name <nn> ^pin-x <com> ^pin-channel-side bottom)
  991.   - (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <min> < <py> })
  992.   - (horizontal-s ^net-name <nn> ^min <hmin> ^max <com> ^com <min>)
  993.   -->
  994.     (modify <v> ^min <py>)
  995.     (make vertical-s ^net-name <nn> ^min <min> ^max <py> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  996. )
  997.  
  998. (p p21
  999.     (context ^present separate)
  1000.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  1001.     (vertical-s ^net-name <nn> ^min <vmin> ^max <com> ^com <min>)
  1002.     (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side top)
  1003.   - (pin ^net-name <nn> ^pin-x { < <px> >= <min> } ^pin-y > <com>)
  1004.   - (pin ^net-name <nn> ^pin-y <com> ^pin-channel-side left)
  1005.   - (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <min> < <px> })
  1006.   - (vertical-s ^net-name <nn> ^min <com> ^max <vmax> ^com <min>)
  1007.   -->
  1008.     (modify <h> ^min <px>)
  1009.     (make horizontal-s ^net-name <nn> ^min <min> ^max <px> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  1010. )
  1011.  
  1012. (p p22
  1013.     (context ^present separate)
  1014.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  1015.     (vertical-s ^net-name <nn> ^min <com> ^max <vmax> ^com <min>)
  1016.     (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side bottom)
  1017.   - (pin ^net-name <nn> ^pin-x { < <px> >= <min> } ^pin-y < <com>)
  1018.   - (pin ^net-name <nn> ^pin-y <com> ^pin-channel-side left)
  1019.   - (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <min> < <px> })
  1020.   - (vertical-s ^net-name <nn> ^min <vmin> ^max <com> ^com <min>)
  1021.   -->
  1022.     (modify <h> ^min <px>)
  1023.     (make horizontal-s ^net-name <nn> ^min <min> ^max <px> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  1024. )
  1025.  
  1026. (p p23
  1027.     (context ^present separate)
  1028.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  1029.     (vertical-s ^net-name <nn> ^min <vmin> ^max <com> ^com <max>)
  1030.     (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side top)
  1031.   - (pin ^net-name <nn> ^pin-x { > <px> <= <max> } ^pin-y > <com>)
  1032.   - (pin ^net-name <nn> ^pin-y <com> ^pin-channel-side right)
  1033.   - (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <px> < <max> })
  1034.   - (vertical-s ^net-name <nn> ^min <com> ^max <vmax> ^com <max>)
  1035.   -->
  1036.     (modify <h> ^max <px>)
  1037.     (make horizontal-s ^net-name <nn> ^min <px> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  1038. )
  1039.  
  1040. (p p24
  1041.     (context ^present separate)
  1042.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
  1043.     (vertical-s ^net-name <nn> ^min <com> ^max <vmax> ^com <max>)
  1044.     (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side bottom)
  1045.   - (pin ^net-name <nn> ^pin-x { > <px> <= <max> } ^pin-y < <com>)
  1046.   - (pin ^net-name <nn> ^pin-y <com> ^pin-channel-side right)
  1047.   - (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <px> < <max> })
  1048.   - (vertical-s ^net-name <nn> ^min <vmin> ^max <com> ^com <max>)
  1049.   -->
  1050.     (modify <h> ^max <px>)
  1051.     (make horizontal-s ^net-name <nn> ^min <px> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
  1052. )
  1053.  
  1054. (p p604
  1055.     (context ^present form-verti)
  1056.     (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
  1057.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x { <vcom> >= <min> <= <max> } ^pin-channel-side top)
  1058.     (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1>)
  1059.   - (horizontal-s ^net-name <bnn> ^min <= <vcom> ^max >= <vcom> ^id <> <id1>)
  1060.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side bottom)
  1061.   - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  1062.   -->
  1063.     (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type vertical)
  1064. )
  1065.  
  1066. (p p605
  1067.     (context ^present form-verti)
  1068.     (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
  1069.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x { <vcom> >= <min> <= <max> } ^pin-channel-side bottom)
  1070.     (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1>)
  1071.   - (horizontal-s ^net-name <bnn> ^min <= <vcom> ^max >= <vcom> ^id <> <id1>)
  1072.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side top)
  1073.   - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  1074.   -->
  1075.     (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type vertical)
  1076. )
  1077.  
  1078. (p p606
  1079.     (context ^present form-verti)
  1080.     (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
  1081.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x { <vcom> >= <min> <= <max> } ^pin-channel-side top)
  1082.     (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1> ^com 1)
  1083.     (horizontal-s ^net-name <bnn> ^min <= <vcom> ^max >= <vcom> ^id <> <id1>)
  1084.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side bottom)
  1085.   - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  1086.   -->
  1087.     (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type vertical)
  1088. )
  1089.  
  1090. (p p607
  1091.     (context ^present form-verti)
  1092.     (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
  1093.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x { <vcom> >= <min> <= <max> } ^pin-channel-side bottom)
  1094.     (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1> ^com <> 1)
  1095.     (horizontal-s ^net-name <bnn> ^min <= <vcom> ^max >= <vcom> ^id <> <id1>)
  1096.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side top)
  1097.   - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  1098.   -->
  1099.     (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type vertical)
  1100. )
  1101.  
  1102. (p p608
  1103.     (context ^present form-verti)
  1104.     (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference <> 0)
  1105.     (vertical-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
  1106.     (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <com> ^id <id1>)
  1107.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x <vcom> ^pin-channel-side top)
  1108.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side bottom)
  1109.   - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  1110.   -->
  1111.     (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type vertical)
  1112. )
  1113.  
  1114. (p p609
  1115.     (context ^present form-verti)
  1116.     (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference <> 0)
  1117.     (vertical-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
  1118.     (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <com> ^id <id1>)
  1119.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x <vcom> ^pin-channel-side bottom)
  1120.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side top)
  1121.   - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  1122.   -->
  1123.     (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type vertical)
  1124. )
  1125.  
  1126. (p p610
  1127.     (context ^present form-verti)
  1128.     (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com 1 ^id <id>)
  1129.     (vertical-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
  1130.     (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <lr> ^id <id1>)
  1131.     (last-row <lr>)
  1132.     (vertical-s ^net-name <bnn> ^com <vcom>)
  1133.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x <vcom> ^pin-channel-side top)
  1134.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side bottom)
  1135.   - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  1136.   -->
  1137.     (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type vertical)
  1138. )
  1139.  
  1140. (p p611
  1141.     (context ^present form-verti)
  1142.     (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
  1143.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y { <vcom> >= <min> <= <max> } ^pin-channel-side right)
  1144.     (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1>)
  1145.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side left)
  1146.   - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  1147.   -->
  1148.     (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type horizontal)
  1149. )
  1150.  
  1151. (p p612
  1152.     (context ^present form-verti)
  1153.     (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
  1154.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y { <vcom> >= <min> <= <max> } ^pin-channel-side left)
  1155.     (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1>)
  1156.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side right)
  1157.   - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  1158.   -->
  1159.     (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type horizontal)
  1160. )
  1161.  
  1162. (p p613
  1163.     (context ^present form-verti)
  1164.     (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference <> 0)
  1165.     (horizontal-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
  1166.     (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <com> ^id <id1>)
  1167.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y <vcom> ^pin-channel-side right)
  1168.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side left)
  1169.   - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  1170.   -->
  1171.     (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type horizontal)
  1172. )
  1173.  
  1174. (p p614
  1175.     (context ^present form-verti)
  1176.     (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference <> 0)
  1177.     (horizontal-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
  1178.     (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <com> ^id <id1>)
  1179.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y <vcom> ^pin-channel-side left)
  1180.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side right)
  1181.   - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  1182.   -->
  1183.     (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type horizontal)
  1184. )
  1185.  
  1186. (p p615
  1187.     (context ^present form-verti)
  1188.     (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com 1 ^id <id>)
  1189.     (horizontal-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
  1190.     (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <lc> ^id <id1>)
  1191.     (last-col <lc>)
  1192.     (horizontal-s ^net-name <bnn> ^com <vcom>)
  1193.     (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y <vcom> ^pin-channel-side right)
  1194.     (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side left)
  1195.   - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  1196.   -->
  1197.     (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type horizontal)
  1198. )
  1199.  
  1200. (p p616
  1201.     (context ^present form-verti)
  1202.     (constraint ^constraint-type vertical ^net-name-1 <tnn> ^net-name-2 <bnn> ^seg-id-1 <tid> ^seg-id-2 <bid>)
  1203.     (constraint ^constraint-type vertical ^net-name-1 <nn1> ^net-name-2 <tnn> ^seg-id-1 <id1> ^seg-id-2 <tid2>)
  1204.   - (vertical-cycle <tnn> <tid> <tid2>)
  1205.   -->
  1206.     (make vertical-cycle <tnn> <tid> <tid2>)
  1207. )
  1208.  
  1209. (p p617
  1210.     (context ^present form-verti)
  1211.     (constraint ^constraint-type horizontal ^net-name-1 <tnn> ^net-name-2 <bnn> ^seg-id-1 <tid> ^seg-id-2 <bid>)
  1212.     (constraint ^constraint-type horizontal ^net-name-1 <nn1> ^net-name-2 <tnn> ^seg-id-1 <id1> ^seg-id-2 <tid2>)
  1213.   - (horizontal-cycle <tnn> <tid> <tid2>)
  1214.   -->
  1215.     (make horizontal-cycle <tnn> <tid> <tid2>)
  1216. )
  1217.  
  1218. (p p618
  1219.     (context ^present remove-cycle)
  1220.     { <h> (horizontal-cycle <nn>) }
  1221.   - (constraint ^constraint-type horizontal ^net-name-1 <nn>)
  1222.   - (constraint ^constraint-type horizontal ^net-name-2 <nn>)
  1223.   -->
  1224.     (remove <h>)
  1225. )
  1226.  
  1227. (p p619
  1228.     (context ^present remove-cycle)
  1229.     { <h> (horizontal-cycle <nn>) }
  1230.   - (constraint ^constraint-type horizontal ^net-name-2 <nn>)
  1231.   -->
  1232.     (remove <h>)
  1233. )
  1234.  
  1235. (p p620
  1236.     (context ^present remove-cycle)
  1237.     { <h> (horizontal-cycle <nn>) }
  1238.   - (constraint ^constraint-type horizontal ^net-name-1 <nn>)
  1239.   -->
  1240.     (remove <h>)
  1241. )
  1242.  
  1243. (p p621
  1244.     (context ^present remove-cycle)
  1245.     { <h> (vertical-cycle <nn>) }
  1246.   - (constraint ^constraint-type vertical ^net-name-1 <nn>)
  1247.   - (constraint ^constraint-type vertical ^net-name-2 <nn>)
  1248.   -->
  1249.     (remove <h>)
  1250. )
  1251.  
  1252. (p p622
  1253.     (context ^present remove-cycle)
  1254.     { <h> (vertical-cycle <nn>) }
  1255.   - (constraint ^constraint-type vertical ^net-name-2 <nn>)
  1256.   -->
  1257.     (remove <h>)
  1258. )
  1259.  
  1260. (p p623
  1261.     (context ^present remove-cycle)
  1262.     { <h> (vertical-cycle <nn>) }
  1263.   - (constraint ^constraint-type vertical ^net-name-1 <nn>)
  1264.   -->
  1265.     (remove <h>)
  1266. )
  1267.  
  1268. (p p624
  1269.     { <c> (context ^present remove-cycle) }
  1270.   -->
  1271.     (remove <c>)
  1272. )
  1273.  
  1274. (p p625
  1275.     (context ^present remove-cycle)
  1276.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
  1277.     { <h2> (horizontal-s ^net-name <nn> ^min <min1> ^max <min> ^id <id2>) }
  1278.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
  1279.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
  1280.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <max>)
  1281.   - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
  1282.     (last-row <lr>)
  1283.   - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  1284.   - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  1285.   -->
  1286.     (remove <h1>)
  1287.     (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <max> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  1288.     (modify <h2> ^max <max>)
  1289. )
  1290.  
  1291. (p p626
  1292.     (context ^present remove-cycle)
  1293.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
  1294.     { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <max1> ^id <id2>) }
  1295.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
  1296.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
  1297.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <min>)
  1298.   - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
  1299.     (last-row <lr>)
  1300.   - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  1301.   - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  1302.   -->
  1303.     (remove <h1>)
  1304.     (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <min> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  1305.     (modify <h2> ^min <min>)
  1306. )
  1307.  
  1308. (p p627
  1309.     (context ^present remove-cycle)
  1310.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
  1311.     { <h2> (horizontal-s ^net-name <nn> ^min <min1> ^max <min> ^id <id2>) }
  1312.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
  1313.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
  1314.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <max>)
  1315.   - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
  1316.     (last-row <lr>)
  1317.   - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  1318.   - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  1319.   -->
  1320.     (remove <h1>)
  1321.     (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <max> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  1322.     (modify <h2> ^max <max>)
  1323. )
  1324.  
  1325. (p p628
  1326.     (context ^present remove-cycle)
  1327.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
  1328.     { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <max1> ^id <id2>) }
  1329.     (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
  1330.     (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
  1331.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <min>)
  1332.   - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
  1333.     (last-row <lr>)
  1334.   - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  1335.   - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  1336.   -->
  1337.     (remove <h1>)
  1338.     (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <min> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  1339.     (modify <h2> ^min <min>)
  1340. )
  1341.  
  1342. (p p629
  1343.     (context ^present remove-cycle)
  1344.     (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^com 1)
  1345.     (ff ^net-name <nn> ^grid-x { <gx> >= <hmin> <= <hmax> } ^grid-y <gy> ^came-from south)
  1346.   - (ff ^net-name <nn> ^grid-x <> <gx> ^grid-y < <gy>)
  1347.   - (vertical-s ^net-name <nn> ^min 1 ^max > <gy> ^com <gx>)
  1348.   -->
  1349.     (make vertical-s ^net-name <nn> ^min 1 ^max (compute <gy> + 1) ^com <gx> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  1350. )
  1351.  
  1352. (p p630
  1353.     (context ^present remove-cycle)
  1354.     (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^com 1)
  1355.     (ff ^net-name <nn> ^grid-x { <gx> >= <hmin> <= <hmax> } ^grid-y <gy> ^came-from south)
  1356.   - (ff ^net-name <nn> ^grid-x <> <gx> ^grid-y <= <gy>)
  1357.     { <v> (vertical-s ^net-name <nn> ^min 1 ^max <= <gy> ^com <gx>) }
  1358.   -->
  1359.     (modify <v> ^max (compute <gy> + 1))
  1360. )
  1361.  
  1362. (p p631
  1363.     (context ^present remove-cycle)
  1364.     (last-row <lr>)
  1365.     (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^com <lr>)
  1366.     (ff ^net-name <nn> ^grid-x { <gx> >= <hmin> <= <hmax> } ^grid-y <gy> ^came-from north)
  1367.   - (ff ^net-name <nn> ^grid-x <> <gx> ^grid-y > <gy>)
  1368.   - (vertical-s ^net-name <nn> ^min < <gy> ^max <lr> ^com <gx>)
  1369.   -->
  1370.     (make vertical-s ^net-name <nn> ^min (compute <gy> - 1) ^max <lr> ^com <gx> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  1371. )
  1372.  
  1373. (p p632
  1374.     (context ^present remove-cycle)
  1375.     (last-row <lr>)
  1376.     (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^com <lr>)
  1377.     (ff ^net-name <nn> ^grid-x { <gx> >= <hmin> <= <hmax> } ^grid-y <gy> ^came-from north)
  1378.   - (ff ^net-name <nn> ^grid-x <> <gx> ^grid-y >= <gy>)
  1379.     { <v> (vertical-s ^net-name <nn> ^min >= <gy> ^max <lr> ^com <gx>) }
  1380.   -->
  1381.     (modify <v> ^min (compute <gy> - 1))
  1382. )
  1383.  
  1384. (p p633
  1385.     (context ^present remove-cycle)
  1386.     (vertical-s ^net-name <nn> ^min <vmin> ^max <vmax> ^com 1)
  1387.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy> >= <vmin> <= <vmax> } ^came-from west)
  1388.   - (ff ^net-name <nn> ^grid-x < <gx> ^grid-y <> <gy>)
  1389.   - (horizontal-s ^net-name <nn> ^min 1 ^max > <gx> ^com <gy>)
  1390.   -->
  1391.     (make horizontal-s ^net-name <nn> ^min 1 ^max (compute <gx> + 1) ^com <gy> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  1392. )
  1393.  
  1394. (p p634
  1395.     (context ^present remove-cycle)
  1396.     (vertical-s ^net-name <nn> ^min <vmin> ^max <vmax> ^com 1)
  1397.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy> >= <vmin> <= <vmax> } ^came-from west)
  1398.   - (ff ^net-name <nn> ^grid-x <= <gx> ^grid-y <> <gy>)
  1399.     { <h> (horizontal-s ^net-name <nn> ^min 1 ^max <= <gx> ^com <gy>) }
  1400.   -->
  1401.     (modify <h> ^max (compute <gx> + 1))
  1402. )
  1403.  
  1404. (p p635
  1405.     (context ^present remove-cycle)
  1406.     (last-col <lc>)
  1407.     (vertical-s ^net-name <nn> ^min <vmin> ^max <vmax> ^com <lc>)
  1408.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy> >= <vmin> <= <vmax> } ^came-from east)
  1409.   - (ff ^net-name <nn> ^grid-x > <gx> ^grid-y <> <gy>)
  1410.   - (horizontal-s ^net-name <nn> ^min < <gx> ^max <lc> ^com <gy>)
  1411.   -->
  1412.     (make horizontal-s ^net-name <nn> ^min (compute <gx> - 1) ^max <lc> ^com <gy> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
  1413. )
  1414.  
  1415. (p p636
  1416.     (context ^present remove-cycle)
  1417.     (last-col <lc>)
  1418.     (vertical-s ^net-name <nn> ^min <vmin> ^max <vmax> ^com <lc>)
  1419.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy> >= <vmin> <= <vmax> } ^came-from east)
  1420.   - (ff ^net-name <nn> ^grid-x >= <gx> ^grid-y <> <gy>)
  1421.     { <h> (horizontal-s ^net-name <nn> ^min >= <gx> ^max <lc> ^com <gy>) }
  1422.   -->
  1423.     (modify <h> ^min (compute <gx> - 1))
  1424. )
  1425.  
  1426. (p p637
  1427.     (context ^present remove-cycle)
  1428.     (last-row <lr>)
  1429.     (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^sum 2 ^difference 0)
  1430.     { <v> (vertical-s ^net-name <nn> ^min 1 ^max { <lr> <> 2 } ^com { <vcom> >= <hmin> <= <hmax> }) }
  1431.     (pin ^net-name <nn> ^pin-x <vcom> ^pin-channel-side top)
  1432.     (ff ^net-name <> <nn> ^grid-x <vcom> ^came-from south)
  1433.   -->
  1434.     (modify <v> ^min (compute <lr> - 1))
  1435. )
  1436.  
  1437. (p p638
  1438.     (context ^present remove-cycle)
  1439.     (last-row <lr>)
  1440.     (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^sum 2 ^difference 0)
  1441.     { <v> (vertical-s ^net-name <nn> ^min 1 ^max { <lr> <> 2 } ^com { <vcom> >= <hmin> <= <hmax> }) }
  1442.     (pin ^net-name <nn> ^pin-x <vcom> ^pin-channel-side bottom)
  1443.     (ff ^net-name <> <nn> ^grid-x <vcom> ^came-from north)
  1444.   -->
  1445.     (modify <v> ^max 2)
  1446. )
  1447.  
  1448. (p p639
  1449.     (context ^present remove-cycle)
  1450.     (last-col <lc>)
  1451.     (vertical-s ^net-name <nn> ^min <hmin> ^max <hmax> ^sum 2 ^difference 0)
  1452.     { <v> (horizontal-s ^net-name <nn> ^min 1 ^max { <lc> <> 2 } ^com { <vcom> >= <hmin> <= <hmax> }) }
  1453.     (pin ^net-name <nn> ^pin-x <vcom> ^pin-channel-side right)
  1454.     (ff ^net-name <> <nn> ^grid-x <vcom> ^came-from west)
  1455.   -->
  1456.     (modify <v> ^min (compute <lc> - 1))
  1457. )
  1458.  
  1459. (p p640
  1460.     (context ^present remove-cycle)
  1461.     (last-col <lc>)
  1462.     (vertical-s ^net-name <nn> ^min <hmin> ^max <hmax> ^sum 2 ^difference 0)
  1463.     { <v> (horizontal-s ^net-name <nn> ^min 1 ^max { <lc> <> 2 } ^com { <vcom> >= <hmin> <= <hmax> }) }
  1464.     (pin ^net-name <nn> ^pin-x <vcom> ^pin-channel-side left)
  1465.     (ff ^net-name <> <nn> ^grid-x <vcom> ^came-from east)
  1466.   -->
  1467.     (modify <v> ^max 2)
  1468. )
  1469.  
  1470. (p p472
  1471.     (context ^present partial-route)
  1472.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north) }
  1473.     { <vs> (vertical-s ^net-name <nn> ^min <gy1> ^max <gy> ^com <gx>) }
  1474.     { <ff2> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1> ^came-from south) }
  1475.     { <v> (vertical ^net-name nil ^min <gy1> ^max <gy> ^com <gx> ^layer <lay>) }
  1476.   -->
  1477.     (modify <v> ^net-name <nn> ^pin-name <pn>)
  1478.     (remove <ff1> <ff2> <vs>)
  1479. )
  1480.  
  1481. (p p473
  1482.     (context ^present partial-route)
  1483.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from east) }
  1484.     { <vs> (horizontal-s ^net-name <nn> ^min <gx1> ^max <gx> ^com <gy>) }
  1485.     { <ff2> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn1> ^came-from west) }
  1486.     { <v> (horizontal ^net-name nil ^min <gx1> ^max <gx> ^com <gy> ^layer <lay>) }
  1487.   -->
  1488.     (modify <v> ^net-name <nn> ^pin-name <pn>)
  1489.     (remove <ff1> <ff2> <vs>)
  1490. )
  1491.  
  1492. (p p474
  1493.     (context ^present partial-route)
  1494.     { <v1> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <vcom>) }
  1495.     { <h> (horizontal-s ^net-name <nn> ^min <vcom> ^max <hmax> ^com <min> ^top-count 1 ^bot-count 1) }
  1496.     { <v2> (vertical-s ^net-name <nn> ^min <vmin> ^max <min> ^com <hmax> ^top-count 1 ^bot-count 1) }
  1497.     (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmin> ^came-from east)
  1498.     (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <max> ^came-from north)
  1499.   -->
  1500.     (remove <v2>)
  1501.     (modify <h> ^com <vmin>)
  1502.     (modify <v1> ^min <vmin>)
  1503. )
  1504.  
  1505. (p p475
  1506.     (context ^present partial-route)
  1507.     { <h> (horizontal-s ^net-name <nn> ^min <vcom> ^max <hmax> ^com <min> ^top-count 1 ^bot-count 1) }
  1508.     { <v2> (vertical-s ^net-name <nn> ^min <vmin> ^max <min> ^com <hmax> ^top-count 1 ^bot-count 1) }
  1509.     (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmin> ^came-from east)
  1510.     (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <min> ^came-from north)
  1511.   -->
  1512.     (modify <v2> ^com <vcom>)
  1513.     (modify <h> ^com <vmin>)
  1514. )
  1515.  
  1516. (p p476
  1517.     (context ^present partial-route)
  1518.     { <v1> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <vcom>) }
  1519.     { <h> (horizontal-s ^net-name <nn> ^min <hmin> ^max <vcom> ^com <min> ^top-count 1 ^bot-count 1) }
  1520.     { <v2> (vertical-s ^net-name <nn> ^min <vmin> ^max <min> ^com <hmin> ^top-count 1 ^bot-count 1) }
  1521.     (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmin> ^came-from west)
  1522.     (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <max> ^came-from north)
  1523.   -->
  1524.     (remove <v2>)
  1525.     (modify <h> ^com <vmin>)
  1526.     (modify <v1> ^min <vmin>)
  1527. )
  1528.  
  1529. (p p477
  1530.     (context ^present partial-route)
  1531.     { <h> (horizontal-s ^net-name <nn> ^min <hmin> ^max <vcom> ^com <min> ^top-count 1 ^bot-count 1) }
  1532.     { <v2> (vertical-s ^net-name <nn> ^min <vmin> ^max <min> ^com <hmin> ^top-count 1 ^bot-count 1) }
  1533.     (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmin> ^came-from west)
  1534.     (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <min> ^came-from north)
  1535.   -->
  1536.     (modify <v2> ^com <vcom>)
  1537.     (modify <h> ^com <vmin>)
  1538. )
  1539.  
  1540. (p p478
  1541.     (context ^present partial-route)
  1542.     { <v1> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <vcom>) }
  1543.     { <h> (horizontal-s ^net-name <nn> ^min <vcom> ^max <hmax> ^com <max> ^top-count 1 ^bot-count 1) }
  1544.     { <v2> (vertical-s ^net-name <nn> ^min <max> ^max <vmax> ^com <hmax> ^top-count 1 ^bot-count 1) }
  1545.     (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmax> ^came-from east)
  1546.     (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <min> ^came-from south)
  1547.   -->
  1548.     (remove <v2>)
  1549.     (modify <h> ^com <vmax>)
  1550.     (modify <v1> ^max <vmax>)
  1551. )
  1552.  
  1553. (p p479
  1554.     (context ^present partial-route)
  1555.     { <h> (horizontal-s ^net-name <nn> ^min <vcom> ^max <hmax> ^com <max> ^top-count 1 ^bot-count 1) }
  1556.     { <v2> (vertical-s ^net-name <nn> ^min <max> ^max <vmax> ^com <hmax> ^top-count 1 ^bot-count 1) }
  1557.     (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmax> ^came-from east)
  1558.     (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <max> ^came-from south)
  1559.   -->
  1560.     (modify <v2> ^com <vcom>)
  1561.     (modify <h> ^com <vmax>)
  1562. )
  1563.  
  1564. (p p480
  1565.     (context ^present partial-route)
  1566.     { <v1> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <vcom>) }
  1567.     { <h> (horizontal-s ^net-name <nn> ^min <hmin> ^max <vcom> ^com <max> ^top-count 1 ^bot-count 1) }
  1568.     { <v2> (vertical-s ^net-name <nn> ^min <max> ^max <vmax> ^com <hmin> ^top-count 1 ^bot-count 1) }
  1569.     (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmax> ^came-from west)
  1570.     (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <min> ^came-from south)
  1571.   -->
  1572.     (remove <v2>)
  1573.     (modify <h> ^com <vmax>)
  1574.     (modify <v1> ^max <vmax>)
  1575. )
  1576.  
  1577. (p p481
  1578.     (context ^present partial-route)
  1579.     { <h> (horizontal-s ^net-name <nn> ^min <hmin> ^max <vcom> ^com <max> ^top-count 1 ^bot-count 1) }
  1580.     { <v2> (vertical-s ^net-name <nn> ^min <max> ^max <vmax> ^com <hmin> ^top-count 1 ^bot-count 1) }
  1581.     (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmax> ^came-from west)
  1582.     (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <max> ^came-from south)
  1583.   -->
  1584.     (modify <v2> ^com <vcom>)
  1585.     (modify <h> ^com <vmax>)
  1586. )
  1587.  
  1588. (p p482
  1589.     (context ^present partial-route)
  1590.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom>) }
  1591.     { <v> (vertical-s ^net-name <nn> ^min <hcom> ^max <vmax> ^com <min> ^top-count 1 ^bot-count 1) }
  1592.     { <h2> (horizontal-s ^net-name <nn> ^min <hmin> ^max <min> ^com <vmax> ^top-count 1 ^bot-count 1) }
  1593.     (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmax> ^came-from north)
  1594.     (ff ^net-name <nn> ^grid-x <max> ^grid-y <hcom> ^came-from east)
  1595.   -->
  1596.     (remove <h2>)
  1597.     (modify <v> ^com <hmin>)
  1598.     (modify <h1> ^min <hmin>)
  1599. )
  1600.  
  1601. (p p483
  1602.     (context ^present partial-route)
  1603.     { <v> (vertical-s ^net-name <nn> ^min <hcom> ^max <vmax> ^com <min> ^top-count 1 ^bot-count 1) }
  1604.     { <h2> (horizontal-s ^net-name <nn> ^min <hmin> ^max <min> ^com <vmax> ^top-count 1 ^bot-count 1) }
  1605.     (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmax> ^came-from north)
  1606.     (ff ^net-name <nn> ^grid-x <min> ^grid-y <hcom> ^came-from east)
  1607.   -->
  1608.     (modify <h2> ^com <hcom>)
  1609.     (modify <v> ^com <hmin>)
  1610. )
  1611.  
  1612. (p p484
  1613.     (context ^present partial-route)
  1614.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom>) }
  1615.     { <v> (vertical-s ^net-name <nn> ^min <hcom> ^max <vmax> ^com <max> ^top-count 1 ^bot-count 1) }
  1616.     { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <hmax> ^com <vmax> ^top-count 1 ^bot-count 1) }
  1617.     (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmax> ^came-from north)
  1618.     (ff ^net-name <nn> ^grid-x <min> ^grid-y <hcom> ^came-from west)
  1619.   -->
  1620.     (remove <h2>)
  1621.     (modify <v> ^com <hmax>)
  1622.     (modify <h1> ^max <hmax>)
  1623. )
  1624.  
  1625. (p p485
  1626.     (context ^present partial-route)
  1627.     { <v> (vertical-s ^net-name <nn> ^min <hcom> ^max <vmax> ^com <max> ^top-count 1 ^bot-count 1) }
  1628.     { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <hmax> ^com <vmax> ^top-count 1 ^bot-count 1) }
  1629.     (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmax> ^came-from north)
  1630.     (ff ^net-name <nn> ^grid-x <max> ^grid-y <hcom> ^came-from west)
  1631.   -->
  1632.     (modify <h2> ^com <hcom>)
  1633.     (modify <v> ^com <hmax>)
  1634. )
  1635.  
  1636. (p p486
  1637.     (context ^present partial-route)
  1638.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom>) }
  1639.     { <v> (vertical-s ^net-name <nn> ^min <vmin> ^max <hcom> ^com <min> ^top-count 1 ^bot-count 1) }
  1640.     { <h2> (horizontal-s ^net-name <nn> ^min <hmin> ^max <min> ^com <vmin> ^top-count 1 ^bot-count 1) }
  1641.     (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmin> ^came-from south)
  1642.     (ff ^net-name <nn> ^grid-x <max> ^grid-y <hcom> ^came-from east)
  1643.   -->
  1644.     (remove <h2>)
  1645.     (modify <v> ^com <hmin>)
  1646.     (modify <h1> ^min <hmin>)
  1647. )
  1648.  
  1649. (p p487
  1650.     (context ^present partial-route)
  1651.     { <v> (vertical-s ^net-name <nn> ^min <vmin> ^max <hcom> ^com <min> ^top-count 1 ^bot-count 1) }
  1652.     { <h2> (horizontal-s ^net-name <nn> ^min <hmin> ^max <min> ^com <vmin> ^top-count 1 ^bot-count 1) }
  1653.     (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmin> ^came-from south)
  1654.     (ff ^net-name <nn> ^grid-x <min> ^grid-y <hcom> ^came-from east)
  1655.   -->
  1656.     (modify <h2> ^com <hcom>)
  1657.     (modify <v> ^com <hmin>)
  1658. )
  1659.  
  1660. (p p488
  1661.     (context ^present partial-route)
  1662.     { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom>) }
  1663.     { <v> (vertical-s ^net-name <nn> ^min <vmin> ^max <hcom> ^com <max> ^top-count 1 ^bot-count 1) }
  1664.     { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <hmax> ^com <vmin> ^top-count 1 ^bot-count 1) }
  1665.     (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmin> ^came-from south)
  1666.     (ff ^net-name <nn> ^grid-x <min> ^grid-y <hcom> ^came-from west)
  1667.   -->
  1668.     (remove <h2>)
  1669.     (modify <v> ^com <hmax>)
  1670.     (modify <h1> ^max <hmax>)
  1671. )
  1672.  
  1673. (p p489
  1674.     (context ^present partial-route)
  1675.     { <v> (vertical-s ^net-name <nn> ^min <vmin> ^max <hcom> ^com <max> ^top-count 1 ^bot-count 1) }
  1676.     { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <hmax> ^com <vmin> ^top-count 1 ^bot-count 1) }
  1677.     (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmin> ^came-from south)
  1678.     (ff ^net-name <nn> ^grid-x <max> ^grid-y <hcom> ^came-from west)
  1679.   -->
  1680.     (modify <h2> ^com <hcom>)
  1681.     (modify <v> ^com <hmax>)
  1682. )
  1683.  
  1684. (p p186
  1685.     (context ^present extend-ff)
  1686.     (horizontal-s ^net-name <nn> ^difference { <d> < 0 })
  1687.   - (horizontal-s ^difference < <d>)
  1688.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from south) }
  1689.   - (ff ^net-name <nn> ^grid-x <garb1> ^grid-y < <gy1>)
  1690.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y <gy1>)
  1691.   - (horizontal ^net-name nil ^min < <gx2> ^max > <gx1> ^com <gy1>)
  1692.   - (horizontal ^net-name nil ^min <gx2> ^max > <gx1> ^com <gy1> ^min-net nil)
  1693.   - (horizontal ^net-name nil ^min < <gx2> ^max <gx1> ^com <gy1> ^max-net nil)
  1694.     { <v> (vertical ^net-name nil ^max { <max> > <gy1> } ^min { < <max> <= <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1695.     (congestion ^direction row ^coordinate <gy2> ^como <gy1>)
  1696.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  1697.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  1698.   - (extended-ff <nn> bottom)
  1699.   - (vertical-cycle <nn>)
  1700.   -->
  1701.     (modify <v> ^min <gy2> ^min-net <nn>)
  1702.     (make vertical ^net-name <nn> ^max <gy2> ^min <gy1> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1703.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1704. )
  1705.  
  1706. (p p187
  1707.     (context ^present extend-ff)
  1708.     (horizontal-s ^net-name <nn> ^difference { <d> < 0 })
  1709.   - (horizontal-s ^difference < <d>)
  1710.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from south) }
  1711.   - (ff ^net-name <nn> ^grid-x <garb1> ^grid-y < <gy1>)
  1712.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y <gy1>)
  1713.   - (horizontal ^net-name nil ^min < <gx1> ^max > <gx2> ^com <gy1>)
  1714.   - (horizontal ^net-name nil ^min <gx1> ^max > <gx2> ^com <gy1> ^min-net nil)
  1715.   - (horizontal ^net-name nil ^min < <gx1> ^max <gx2> ^com <gy1> ^max-net nil)
  1716.     { <v> (vertical ^net-name nil ^max { <max> > <gy1> } ^min { < <max> <= <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1717.     (congestion ^direction row ^coordinate <gy2> ^como <gy1>)
  1718.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  1719.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  1720.   - (extended-ff <nn> bottom)
  1721.   - (vertical-cycle <nn>)
  1722.   -->
  1723.     (modify <v> ^min <gy2> ^min-net <nn>)
  1724.     (make vertical ^net-name <nn> ^max <gy2> ^min <gy1> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1725.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1726. )
  1727.  
  1728. (p p188
  1729.     (context ^present extend-ff)
  1730.     (horizontal-s ^net-name <nn> ^difference { <d> < 0 })
  1731.   - (horizontal-s ^difference < <d>)
  1732.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from south) }
  1733.     (vertical-s ^net-name <nn> ^min <= <gy1> ^max > <gy1> ^com <gx1>)
  1734.   - (ff ^net-name <nn> ^grid-x <> <gx1> ^grid-y <= <gy1>)
  1735.     { <v> (vertical ^net-name nil ^max { <max> > <gy1> } ^min { < <max> <= <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1736.     (congestion ^direction row ^coordinate <gy2> ^como <gy1>)
  1737.   - (vertical-s ^net-name <> <nn> ^min <= <gy2> ^max >= <gy2> ^com <gx1>)
  1738.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  1739.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  1740.   - (extended-ff <nn> bottom)
  1741.   - (vertical-cycle <nn>)
  1742.   -->
  1743.     (make extended-ff <nn> bottom)
  1744.     (modify <v> ^min <gy2> ^min-net <nn>)
  1745.     (make vertical ^net-name <nn> ^max <gy2> ^min <gy1> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1746.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1747. )
  1748.  
  1749. (p p189
  1750.     (context ^present extend-ff)
  1751.     (horizontal-s ^net-name <nn> ^difference { <d> > 0 })
  1752.   - (horizontal-s ^difference > <d>)
  1753.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from north) }
  1754.   - (ff ^net-name <nn> ^grid-x <garb1> ^grid-y > <gy1>)
  1755.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y <gy1>)
  1756.   - (horizontal ^net-name nil ^min < <gx2> ^max > <gx1> ^com <gy1>)
  1757.   - (horizontal ^net-name nil ^min <gx2> ^max > <gx1> ^com <gy1> ^min-net nil)
  1758.   - (horizontal ^net-name nil ^min < <gx2> ^max <gx1> ^com <gy1> ^max-net nil)
  1759.     { <v> (vertical ^net-name nil ^max { <max> >= <gy1> } ^min { < <max> < <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1760.     (congestion ^direction row ^coordinate <gy1> ^como <gy2>)
  1761.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  1762.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  1763.   - (extended-ff <nn> top)
  1764.   - (vertical-cycle <nn>)
  1765.   -->
  1766.     (modify <v> ^max <gy2> ^max-net <nn>)
  1767.     (make vertical ^net-name <nn> ^max <gy1> ^min <gy2> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1768.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1769. )
  1770.  
  1771. (p p190
  1772.     (context ^present extend-ff)
  1773.     (horizontal-s ^net-name <nn> ^difference { <d> > 0 })
  1774.   - (horizontal-s ^difference > <d>)
  1775.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from north) }
  1776.   - (ff ^net-name <nn> ^grid-x <garb1> ^grid-y > <gy1>)
  1777.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y <gy1>)
  1778.   - (horizontal ^net-name nil ^min < <gx1> ^max > <gx2> ^com <gy1>)
  1779.   - (horizontal ^net-name nil ^min <gx1> ^max > <gx2> ^com <gy1> ^min-net nil)
  1780.   - (horizontal ^net-name nil ^min < <gx1> ^max <gx2> ^com <gy1> ^max-net nil)
  1781.     { <v> (vertical ^net-name nil ^max { <max> >= <gy1> } ^min { < <max> < <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1782.     (congestion ^direction row ^coordinate <gy1> ^como <gy2>)
  1783.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  1784.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  1785.   - (extended-ff <nn> top)
  1786.   - (vertical-cycle <nn>)
  1787.   -->
  1788.     (modify <v> ^max <gy2> ^max-net <nn>)
  1789.     (make vertical ^net-name <nn> ^max <gy1> ^min <gy2> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1790.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1791. )
  1792.  
  1793. (p p191
  1794.     (context ^present extend-ff)
  1795.     (horizontal-s ^net-name <nn> ^difference { <d> > 0 })
  1796.   - (horizontal-s ^difference > <d>)
  1797.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from north) }
  1798.     (vertical-s ^net-name <nn> ^min < <gy1> ^max >= <gy1> ^com <gx1>)
  1799.   - (ff ^net-name <nn> ^grid-x <> <gx1> ^grid-y >= <gy1>)
  1800.     { <v> (vertical ^net-name nil ^max { <max> >= <gy1> } ^min { < <max> < <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1801.     (congestion ^direction row ^coordinate <gy1> ^como <gy2>)
  1802.   - (vertical-s ^net-name <> <nn> ^min <= <gy2> ^max >= <gy2> ^com <gx1>)
  1803.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  1804.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  1805.   - (extended-ff <nn> top)
  1806.   - (vertical-cycle <nn>)
  1807.   -->
  1808.     (make extended-ff <nn> top)
  1809.     (modify <v> ^max <gy2> ^max-net <nn>)
  1810.     (make vertical ^net-name <nn> ^max <gy1> ^min <gy2> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1811.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1812. )
  1813.  
  1814. (p p192
  1815.     (context ^present extend-ff)
  1816.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  1817.   - (horizontal-s ^difference <> 0)
  1818.     { <ff> (ff ^net-name <nn> ^grid-x <max> ^grid-y <gy> ^grid-layer <lay> ^came-from south ^pin-name <pn>) }
  1819.   - (horizontal ^net-name nil ^min < <max> ^max >= <max> ^com <gy>)
  1820.     { <v> (vertical ^net-name nil ^max { <vmax> > <gy> } ^min { < <vmax> <= <gy> } ^com <max> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1821.     (congestion ^direction row ^coordinate <gy2> ^como <gy>)
  1822.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <max> ^layer <lay>)
  1823.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <max> ^max >= <max> ^com <gy2> ^layer <lay>)
  1824.   - (vertical-cycle <nn>)
  1825.     (horizontal ^net-name nil ^min < <max> ^max >= <max> ^com > <gy>)
  1826.   -->
  1827.     (modify <v> ^min <gy2> ^min-net <nn>)
  1828.     (make vertical ^net-name <nn> ^max <gy2> ^min <gy> ^layer <lay> ^com <max> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1829.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1830. )
  1831.  
  1832. (p p193
  1833.     (context ^present extend-ff)
  1834.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  1835.   - (horizontal-s ^difference <> 0)
  1836.     { <ff> (ff ^net-name <nn> ^grid-x <min> ^grid-y <gy> ^grid-layer <lay> ^came-from south ^pin-name <pn>) }
  1837.   - (horizontal ^net-name nil ^min <= <min> ^max > <min> ^com <gy>)
  1838.     { <v> (vertical ^net-name nil ^max { <vmax> > <gy> } ^min { < <vmax> <= <gy> } ^com <min> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1839.     (congestion ^direction row ^coordinate <gy2> ^como <gy>)
  1840.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <min> ^layer <lay>)
  1841.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <min> ^max >= <min> ^com <gy2> ^layer <lay>)
  1842.   - (vertical-cycle <nn>)
  1843.     (horizontal ^net-name nil ^min <= <min> ^max > <min> ^com > <gy>)
  1844.   -->
  1845.     (modify <v> ^min <gy2> ^min-net <nn>)
  1846.     (make vertical ^net-name <nn> ^max <gy2> ^min <gy> ^layer <lay> ^com <min> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1847.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1848. )
  1849.  
  1850. (p p194
  1851.     (context ^present extend-ff)
  1852.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  1853.   - (horizontal-s ^difference <> 0)
  1854.     { <ff> (ff ^net-name <nn> ^grid-x <max> ^grid-y <gy> ^grid-layer <lay> ^came-from north ^pin-name <pn>) }
  1855.   - (horizontal ^net-name nil ^min < <max> ^max >= <max> ^com <gy>)
  1856.     { <v> (vertical ^net-name nil ^max { <vmax> >= <gy> } ^min { < <vmax> < <gy> } ^com <max> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1857.     (congestion ^direction row ^coordinate <gy> ^como <gy2>)
  1858.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <max> ^layer <lay>)
  1859.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <max> ^max >= <max> ^com <gy2> ^layer <lay>)
  1860.   - (vertical-cycle <nn>)
  1861.     (horizontal ^net-name nil ^min < <max> ^max >= <max> ^com < <gy>)
  1862.   -->
  1863.     (modify <v> ^max <gy2> ^max-net <nn>)
  1864.     (make vertical ^net-name <nn> ^max <gy> ^min <gy2> ^layer <lay> ^com <max> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1865.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1866. )
  1867.  
  1868. (p p195
  1869.     (context ^present extend-ff)
  1870.     (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  1871.   - (horizontal-s ^difference <> 0)
  1872.     { <ff> (ff ^net-name <nn> ^grid-x <min> ^grid-y <gy> ^grid-layer <lay> ^came-from north ^pin-name <pn>) }
  1873.   - (horizontal ^net-name nil ^min <= <min> ^max > <min> ^com <gy>)
  1874.     { <v> (vertical ^net-name nil ^max { <vmax> >= <gy> } ^min { < <vmax> < <gy> } ^com <min> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1875.     (congestion ^direction row ^coordinate <gy> ^como <gy2>)
  1876.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <min> ^layer <lay>)
  1877.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <min> ^max >= <min> ^com <gy2> ^layer <lay>)
  1878.   - (vertical-cycle <nn>)
  1879.     (horizontal ^net-name nil ^min <= <min> ^max > <min> ^com < <gy>)
  1880.   -->
  1881.     (modify <v> ^max <gy2> ^max-net <nn>)
  1882.     (make vertical ^net-name <nn> ^max <gy> ^min <gy2> ^layer <lay> ^com <min> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1883.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  1884. )
  1885.  
  1886. (p p196
  1887.     (context ^present extend-ff)
  1888.     (vertical-s ^net-name <nn> ^difference { <d> < 0 })
  1889.   - (vertical-s ^difference < <d>)
  1890.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from west) }
  1891.   - (ff ^net-name <nn> ^grid-x < <gx1> ^grid-y <garb1>)
  1892.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y { <gy2> < <gy1> })
  1893.   - (vertical ^net-name nil ^min < <gy2> ^max > <gy1> ^com <gx1>)
  1894.   - (vertical ^net-name nil ^min <gy2> ^max > <gy1> ^com <gx1> ^min-net nil)
  1895.   - (vertical ^net-name nil ^min < <gy2> ^max <gy1> ^com <gx1> ^max-net nil)
  1896.     { <v> (horizontal ^net-name nil ^max { <max> > <gx1> } ^min { < <max> <= <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1897.     (congestion ^direction col ^coordinate <gx2> ^como <gx1>)
  1898.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  1899.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  1900.   - (extended-ff <nn> left)
  1901.   - (horizontal-cycle <nn>)
  1902.   -->
  1903.     (modify <v> ^min <gx2> ^min-net <nn>)
  1904.     (make horizontal ^net-name <nn> ^max <gx2> ^min <gx1> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1905.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  1906. )
  1907.  
  1908. (p p197
  1909.     (context ^present extend-ff)
  1910.     (vertical-s ^net-name <nn> ^difference { <d> < 0 })
  1911.   - (vertical-s ^difference < <d>)
  1912.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from west) }
  1913.   - (ff ^net-name <nn> ^grid-x < <gx1> ^grid-y <garb1>)
  1914.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y { <gy2> > <gy1> })
  1915.   - (vertical ^net-name nil ^min < <gy1> ^max > <gy2> ^com <gx1>)
  1916.   - (vertical ^net-name nil ^min <gy1> ^max > <gy2> ^com <gx1> ^min-net nil)
  1917.   - (vertical ^net-name nil ^min < <gy1> ^max <gy2> ^com <gx1> ^max-net nil)
  1918.     { <v> (horizontal ^net-name nil ^max { <max> > <gx1> } ^min { < <max> <= <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1919.     (congestion ^direction col ^coordinate <gx2> ^como <gx1>)
  1920.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  1921.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  1922.   - (extended-ff <nn> left)
  1923.   - (horizontal-cycle <nn>)
  1924.   -->
  1925.     (modify <v> ^min <gx2> ^min-net <nn>)
  1926.     (make horizontal ^net-name <nn> ^max <gx2> ^min <gx1> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1927.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  1928. )
  1929.  
  1930. (p p198
  1931.     (context ^present extend-ff)
  1932.     (vertical-s ^net-name <nn> ^difference { <d> < 0 })
  1933.   - (vertical-s ^difference < <d>)
  1934.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from west) }
  1935.     (horizontal-s ^net-name <nn> ^min <= <gx1> ^max > <gx1> ^com <gy1>)
  1936.   - (ff ^net-name <nn> ^grid-x <= <gx1> ^grid-y <> <gy1>)
  1937.     { <v> (horizontal ^net-name nil ^max { <max> > <gx1> } ^min { < <max> <= <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1938.     (congestion ^direction col ^coordinate <gx2> ^como <gx1>)
  1939.   - (horizontal-s ^net-name <> <nn> ^min <= <gx2> ^max >= <gx2> ^com <gy1>)
  1940.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  1941.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  1942.   - (extended-ff <nn> left)
  1943.   - (horizontal-cycle <nn>)
  1944.   -->
  1945.     (make extended-ff <nn> left)
  1946.     (modify <v> ^min <gx2> ^min-net <nn>)
  1947.     (make horizontal ^net-name <nn> ^max <gx2> ^min <gx1> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1948.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  1949. )
  1950.  
  1951. (p p199
  1952.     (context ^present extend-ff)
  1953.     (vertical-s ^net-name <nn> ^difference { <d> > 0 })
  1954.   - (vertical-s ^difference > <d>)
  1955.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from east) }
  1956.   - (ff ^net-name <nn> ^grid-x > <gx1> ^grid-y <garb1>)
  1957.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y { <gy2> < <gy1> })
  1958.   - (vertical ^net-name nil ^min < <gy2> ^max > <gy1> ^com <gx1>)
  1959.   - (vertical ^net-name nil ^min <gy2> ^max > <gy1> ^com <gx1> ^min-net nil)
  1960.   - (vertical ^net-name nil ^min < <gy2> ^max <gy1> ^com <gx1> ^max-net nil)
  1961.     { <v> (horizontal ^net-name nil ^max { <max> >= <gx1> } ^min { < <max> < <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1962.     (congestion ^direction col ^coordinate <gx1> ^como <gx2>)
  1963.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  1964.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  1965.   - (extended-ff <nn> right)
  1966.   - (horizontal-cycle <nn>)
  1967.   -->
  1968.     (modify <v> ^max <gx2> ^max-net <nn>)
  1969.     (make horizontal ^net-name <nn> ^max <gx1> ^min <gx2> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1970.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  1971. )
  1972.  
  1973. (p p200
  1974.     (context ^present extend-ff)
  1975.     (vertical-s ^net-name <nn> ^difference { <d> > 0 })
  1976.   - (vertical-s ^difference > <d>)
  1977.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from east) }
  1978.   - (ff ^net-name <nn> ^grid-x > <gx1> ^grid-y <gy1>)
  1979.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y { <gy2> > <gy1> })
  1980.   - (vertical ^net-name nil ^min < <gy1> ^max > <gy2> ^com <gx1>)
  1981.   - (vertical ^net-name nil ^min <gy1> ^max > <gy2> ^com <gx1> ^min-net nil)
  1982.   - (vertical ^net-name nil ^min < <gy1> ^max <gy2> ^com <gx1> ^max-net nil)
  1983.     { <v> (horizontal ^net-name nil ^max { <max> >= <gx1> } ^min { < <max> < <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  1984.     (congestion ^direction col ^coordinate <gx1> ^como <gx2>)
  1985.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  1986.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  1987.   - (extended-ff <nn> right)
  1988.   - (horizontal-cycle <nn>)
  1989.   -->
  1990.     (modify <v> ^max <gx2> ^max-net <nn>)
  1991.     (make horizontal ^net-name <nn> ^max <gx1> ^min <gx2> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  1992.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  1993. )
  1994.  
  1995. (p p201
  1996.     (context ^present extend-ff)
  1997.     (vertical-s ^net-name <nn> ^difference { <d> > 0 })
  1998.   - (vertical-s ^difference > <d>)
  1999.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from east) }
  2000.     (horizontal-s ^net-name <nn> ^min < <gx1> ^max >= <gx1> ^com <gy1>)
  2001.   - (ff ^net-name <nn> ^grid-x >= <gx1> ^grid-y <> <gy1>)
  2002.     { <v> (horizontal ^net-name nil ^max { <max> >= <gx1> } ^min { < <max> < <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  2003.     (congestion ^direction col ^coordinate <gx1> ^como <gx2>)
  2004.   - (horizontal-s ^net-name <> <nn> ^min <= <gx2> ^max >= <gx2> ^com <gy1>)
  2005.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  2006.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  2007.   - (extended-ff <nn> right)
  2008.   - (horizontal-cycle <nn>)
  2009.   -->
  2010.     (make extended-ff <nn> right)
  2011.     (modify <v> ^max <gx2> ^max-net <nn>)
  2012.     (make horizontal ^net-name <nn> ^max <gx1> ^min <gx2> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  2013.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  2014. )
  2015.  
  2016. (p p202
  2017.     (context ^present extend-ff)
  2018.     (vertical-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  2019.   - (vertical-s ^difference <> 0)
  2020.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <max> ^grid-layer <lay> ^came-from west ^pin-name <pn>) }
  2021.   - (vertical ^net-name nil ^min < <max> ^max >= <max> ^com <gx>)
  2022.     { <v> (horizontal ^net-name nil ^max { <vmax> > <gx> } ^min { < <vmax> <= <gx> } ^com <max> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  2023.     (congestion ^direction col ^coordinate <gx2> ^como <gx>)
  2024.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <max> ^layer <lay>)
  2025.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <max> ^max >= <max> ^com <gx2> ^layer <lay>)
  2026.   - (horizontal-cycle <nn>)
  2027.   -->
  2028.     (modify <v> ^min <gx2> ^min-net <nn>)
  2029.     (make horizontal ^net-name <nn> ^max <gx2> ^min <gx> ^layer <lay> ^com <max> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  2030.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  2031. )
  2032.  
  2033. (p p203
  2034.     (context ^present extend-ff)
  2035.     (vertical-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  2036.   - (vertical-s ^difference <> 0)
  2037.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <min> ^grid-layer <lay> ^came-from west ^pin-name <pn>) }
  2038.   - (vertical ^net-name nil ^min <= <min> ^max > <min> ^com <gx>)
  2039.     { <v> (horizontal ^net-name nil ^max { <vmax> > <gx> } ^min { < <vmax> <= <gx> } ^com <min> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  2040.     (congestion ^direction col ^coordinate <gx2> ^como <gx>)
  2041.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <min> ^layer <lay>)
  2042.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <min> ^max >= <min> ^com <gx2> ^layer <lay>)
  2043.   - (horizontal-cycle <nn>)
  2044.   -->
  2045.     (modify <v> ^min <gx2> ^min-net <nn>)
  2046.     (make horizontal ^net-name <nn> ^max <gx2> ^min <gx> ^layer <lay> ^com <min> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  2047.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  2048. )
  2049.  
  2050. (p p204
  2051.     (context ^present extend-ff)
  2052.     (vertical-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  2053.   - (vertical-s ^difference <> 0)
  2054.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <max> ^grid-layer <lay> ^came-from east ^pin-name <pn>) }
  2055.   - (vertical ^net-name nil ^min < <max> ^max >= <max> ^com <gx>)
  2056.     { <v> (horizontal ^net-name nil ^max { <vmax> >= <gx> } ^min { < <vmax> < <gx> } ^com <max> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  2057.     (congestion ^direction col ^coordinate <gx> ^como <gx2>)
  2058.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <max> ^layer <lay>)
  2059.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <max> ^max >= <max> ^com <gx2> ^layer <lay>)
  2060.   - (horizontal-cycle <nn>)
  2061.   -->
  2062.     (modify <v> ^max <gx2> ^max-net <nn>)
  2063.     (make horizontal ^net-name <nn> ^max <gx> ^min <gx2> ^layer <lay> ^com <max> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  2064.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  2065. )
  2066.  
  2067. (p p205
  2068.     (context ^present extend-ff)
  2069.     (vertical-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  2070.   - (vertical-s ^difference <> 0)
  2071.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <min> ^grid-layer <lay> ^came-from east ^pin-name <pn>) }
  2072.   - (vertical ^net-name nil ^min <= <min> ^max > <min> ^com <gx>)
  2073.     { <v> (horizontal ^net-name nil ^max { <vmax> >= <gx> } ^min { < <vmax> < <gx> } ^com <min> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  2074.     (congestion ^direction col ^coordinate <gx> ^como <gx2>)
  2075.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <min> ^layer <lay>)
  2076.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <min> ^max >= <min> ^com <gx2> ^layer <lay>)
  2077.   - (horizontal-cycle <nn>)
  2078.   -->
  2079.     (modify <v> ^max <gx2> ^max-net <nn>)
  2080.     (make horizontal ^net-name <nn> ^max <gx> ^min <gx2> ^layer <lay> ^com <min> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  2081.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  2082. )
  2083.  
  2084. (p p206
  2085.     { <c> (context ^present extend-h-v-s) }
  2086.   -->
  2087.     (modify <c> ^present loose-constraint0)
  2088. )
  2089.  
  2090. (p p207
  2091.     { <c> (context ^present extend-h-v-s) }
  2092.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^came-from west ^pin-name <pn>) }
  2093.     (horizontal-s ^net-name <nn> ^min <= <gx> ^max { <hmaxs> > <gx> } ^com <gy>)
  2094.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^com <gy>)
  2095.     (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy> ^com { <vcoms> > <gx> <= <hmaxs> })
  2096.   - (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy> ^com { >= <gx> < <vcoms> })
  2097.     { <h> (horizontal ^net-name nil ^min <gx> ^max { <hmax> >= <vcoms> } ^com <gy> ^layer <lay>) }
  2098.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <vcoms> ^layer <lay>)
  2099.   -->
  2100.     (make (substr <h> 1 inf) ^net-name <nn> ^pin-name <pn> ^max <vcoms>)
  2101.     (modify <h> ^min <vcoms> ^min-net <nn>)
  2102.     (modify <ff> ^grid-x <vcoms> ^can-chng-layer nil)
  2103.     (modify <c> ^present propagate-constraint)
  2104. )
  2105.  
  2106. (p p208
  2107.     { <c> (context ^present extend-h-v-s) }
  2108.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^came-from east ^pin-name <pn>) }
  2109.     (horizontal-s ^net-name <nn> ^min { <hmins> < <gx> } ^max >= <gx> ^com <gy>)
  2110.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^com <gy>)
  2111.     (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy> ^com { <vcoms> < <gx> >= <hmins> })
  2112.   - (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy> ^com { <= <gx> > <vcoms> })
  2113.     { <h> (horizontal ^net-name nil ^min { <hmin> <= <vcoms> } ^max <gx> ^com <gy> ^layer <lay>) }
  2114.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <vcoms> ^layer <lay>)
  2115.   -->
  2116.     (make (substr <h> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <vcoms>)
  2117.     (modify <h> ^max <vcoms> ^max-net <nn>)
  2118.     (modify <ff> ^grid-x <vcoms> ^can-chng-layer nil)
  2119.     (modify <c> ^present propagate-constraint)
  2120. )
  2121.  
  2122. (p p209
  2123.     { <c> (context ^present extend-h-v-s) }
  2124.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^came-from south ^pin-name <pn>) }
  2125.     (vertical-s ^net-name <nn> ^min <= <gy> ^max { <vmaxs> > <gy> } ^com <gx>)
  2126.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <gx>)
  2127.     (horizontal-s ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { <hcoms> > <gy> <= <vmaxs> })
  2128.   - (horizontal-s ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { >= <gy> < <hcoms> })
  2129.     { <v> (vertical ^net-name nil ^min <gy> ^max { <vmax> >= <hcoms> } ^com <gx> ^layer <lay>) }
  2130.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <hcoms> ^layer <lay>)
  2131.   -->
  2132.     (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^max <hcoms>)
  2133.     (modify <v> ^min <hcoms> ^min-net <nn>)
  2134.     (modify <ff> ^grid-y <hcoms> ^can-chng-layer nil)
  2135.     (modify <c> ^present propagate-constraint)
  2136. )
  2137.  
  2138. (p p210
  2139.     { <c> (context ^present extend-h-v-s) }
  2140.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^came-from north ^pin-name <pn>) }
  2141.     (vertical-s ^net-name <nn> ^min { <vmins> < <gy> } ^max >= <gy> ^com <gx>)
  2142.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <gx>)
  2143.     (horizontal-s ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { <hcoms> < <gy> >= <vmins> })
  2144.   - (horizontal-s ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { <= <gy> > <hcoms> })
  2145.     { <v> (vertical ^net-name nil ^min { <vmin> <= <hcoms> } ^max <gy> ^com <gx> ^layer <lay>) }
  2146.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <hcoms> ^layer <lay>)
  2147.   -->
  2148.     (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <hcoms>)
  2149.     (modify <v> ^max <hcoms> ^max-net <nn>)
  2150.     (modify <ff> ^grid-y <hcoms> ^can-chng-layer nil)
  2151.     (modify <c> ^present propagate-constraint)
  2152. )
  2153.  
  2154. (p p29
  2155.     (goal cleanup <c>)
  2156.     (<c>)
  2157.   -->
  2158.     (remove 2)
  2159. )
  2160.  
  2161. (p p30
  2162.     (goal cleanup <c>)
  2163.   - (<c>)
  2164.   -->
  2165.     (remove 1)
  2166. )
  2167.  
  2168. (p p31
  2169.     (goal cleanup)
  2170.     (verti-has-loop)
  2171.   -->
  2172.     (remove 2)
  2173. )
  2174.  
  2175. (p p83
  2176.     (context ^present propagate-constraint)
  2177.   -->
  2178.     (remove 1)
  2179.     (make context ^previous propagate-constraint)
  2180.     (make context ^present remove-cycle)
  2181. )
  2182.  
  2183. (p p84
  2184.     (context ^present << propagate-constraint extend-pins move-ff >>)
  2185.     (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com> ^layer <lay> ^compo <cpo> ^commo <egarb1>)
  2186.     (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <min2> <= <max1> } ^max { <max2> >= <min1> } ^com <cpo> ^layer <lay> ^compo <garb1> ^commo <egarb2>)
  2187.     { <v1> (vertical ^net-name nil ^min { <min3> <= <com> } ^max { <max3> >= <cpo> > <min3> } ^com { <com2> <= <max1> >= <min1> <= <max2> >= <min2> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <mnn> ^max-net <man>) }
  2188.   -->
  2189.     (make vertical ^min <min3> ^max <com> ^com <com2> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^max-net <nn1> ^min-net <mnn>)
  2190.     (make vertical ^min <cpo> ^max <max3> ^com <com2> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^min-net <nn2> ^max-net <man>)
  2191.     (remove <v1>)
  2192. )
  2193.  
  2194. (p p85
  2195.     (context ^present << propagate-constraint extend-pins >>)
  2196.     (ff ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  2197.     (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <com> ^layer <lay> ^compo <egarb2> ^commo <gy>)
  2198.     { <v1> (vertical ^net-name nil ^min { <min3> <= <gy> } ^max { <max3> >= <com> > <min3> } ^com <gx> ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <mnn> ^max-net <man>) }
  2199.   -->
  2200.     (make vertical ^min <min3> ^max <gy> ^com <gx> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^max-net <nn1> ^min-net <mnn>)
  2201.     (make vertical ^min <com> ^max <max3> ^com <gx> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^min-net <nn2> ^max-net <man>)
  2202.     (remove <v1>)
  2203. )
  2204.  
  2205. (p p86
  2206.     (context ^present << propagate-constraint extend-pins >>)
  2207.     (ff ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  2208.     (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <com> ^layer <lay> ^compo <gy> ^commo <egarb2>)
  2209.     { <v1> (vertical ^net-name nil ^min { <min3> <= <com> } ^max { <max3> >= <gy> > <min3> } ^com <gx> ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <mnn> ^max-net <man>) }
  2210.   -->
  2211.     (make vertical ^min <min3> ^max <com> ^com <gx> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^max-net <nn2> ^min-net <mnn>)
  2212.     (make vertical ^min <gy> ^max <max3> ^com <gx> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^min-net <nn1> ^max-net <man>)
  2213.     (remove <v1>)
  2214. )
  2215.  
  2216. (p p87
  2217.     (context ^present propagate-constraint)
  2218.     (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <garb1> ^max <max1> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  2219.     (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min <min2> ^max <gar2> ^com <com> ^layer <lay> ^compo <egarb3> ^commo <egarb4>)
  2220.     { <h1> (horizontal ^net-name nil ^min <max1> ^max { <min2> > <max1> } ^com <com> ^layer <lay> ^compo <egarb5> ^commo <egarb6>) }
  2221.   - (vertical ^com { > <max1> < <min2> })
  2222.   -->
  2223.     (remove <h1>)
  2224. )
  2225.  
  2226. (p p88
  2227.     (context ^present << propagate-constraint extend-pins move-ff >>)
  2228.     (vertical ^status nil ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com> ^layer <lay> ^compo <cpo> ^commo <egarb1>)
  2229.     (vertical ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <min2> <= <max1> } ^max { <max2> >= <min1> } ^com <cpo> ^layer <lay> ^compo <garb1> ^compo <egarb2>)
  2230.     { <h1> (horizontal ^net-name nil ^min { <min3> <= <com> } ^max { <max3> >= <cpo> } ^com { <com2> <= <max1> >= <min1> <= <max2> >= <min2> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <mnn> ^max-net <man>) }
  2231.   -->
  2232.     (make horizontal ^min <min3> ^max <com> ^com <com2> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^min-net <mnn> ^max-net <nn1>)
  2233.     (make horizontal ^min <cpo> ^max <max3> ^com <com2> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^max-net <man> ^min-net <nn2>)
  2234.     (remove <h1>)
  2235. )
  2236.  
  2237. (p p89
  2238.     (context ^present propagate-constraint)
  2239.     (vertical ^status nil ^net-name { <nn1> <> nil } ^min <garb1> ^max <max1> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  2240.     (vertical ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min <min2> ^max <garb2> ^com <com> ^layer <lay> ^compo <egarb3> ^commo <egarb4>)
  2241.   - (horizontal ^com { > <max1> < <min2> })
  2242.     { <v1> (vertical ^net-name nil ^min <max1> ^max { <min2> > <max1> } ^com <com> ^layer <lay> ^compo <egarb5> ^commo <egarb6>) }
  2243.   -->
  2244.     (remove <v1>)
  2245. )
  2246.  
  2247. (p p90
  2248.     (context ^present propagate-constraint)
  2249.     (vertical ^status nil ^net-name { <nn1> <> nil } ^min <vmin> ^max <garb1> ^com <vcom> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  2250.     (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb2> <= <vcom> } ^max { <garb3> >= <vcom> } ^com <hcom> ^layer <lay> ^compo <vmin> ^commo <garb5>)
  2251.     { <v1> (vertical ^net-name nil ^min <garb4> ^max { <vmin> > <garb4> } ^com <vcom> ^layer <lay> ^compo <egarb3> ^commo <egarb4>) }
  2252.   -->
  2253.     (modify <v1> ^max <hcom> ^max-net <nn2>)
  2254. )
  2255.  
  2256. (p p91
  2257.     (context ^present propagate-constraint)
  2258.     (vertical ^status nil ^net-name { <nn1> <> nil } ^min <garb1> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  2259.     (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb2> <= <vcom> } ^max { <garb3> >= <vcom> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <vmax>)
  2260.     { <v1> (vertical ^net-name nil ^min <vmax> ^max { <garb5> > <vmax> } ^com <vcom> ^layer <lay> ^compo <egarb3> ^commo <egarb4>) }
  2261.   -->
  2262.     (modify <v1> ^min <hcom> ^min-net <nn2>)
  2263. )
  2264.  
  2265. (p p92
  2266.     (context ^present propagate-constraint)
  2267.     (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <min> ^max <garb1> ^com <hcom> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  2268.     (vertical ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb2> <= <hcom> } ^max { <garb3> >= <hcom> } ^com <vcom> ^layer <lay> ^compo <min> ^commo <egarb3>)
  2269.     { <h1> (horizontal ^net-name nil ^min <garb4> ^max { <min> > <garb4> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  2270.   -->
  2271.     (modify <h1> ^max <vcom> ^max-net <nn2>)
  2272. )
  2273.  
  2274. (p p93
  2275.     (context ^present propagate-constraint)
  2276.     (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <garb1> ^max <max> ^com <hcom> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  2277.     (vertical ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb2> <= <hcom> } ^max { <garb3> >= <hcom> } ^com <vcom> ^layer <lay> ^compo <garb4> ^commo <max>)
  2278.     { <h1> (horizontal ^net-name nil ^min <max> ^max { <garb4> > <max> } ^com <hcom> ^layer <lay> ^compo <egarb3> ^commo <egarb4>) }
  2279.   -->
  2280.     (modify <h1> ^min <vcom> ^min-net <nn2>)
  2281. )
  2282.  
  2283. (p p94
  2284.     (context ^present propagate-constraint)
  2285.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  2286.     { <h1> (horizontal ^net-name nil ^min <garb3> ^max { <gx> > <garb3> } ^com <gy> ^layer <lay> ^compo <egarb3> ^commo <egarb4>) }
  2287.     (vertical ^status nil ^net-name { <nn2> <> <nn> <> nil } ^min { <garb1> <= <gy> } ^max { <garb2> >= <gy> } ^com <vcom> ^layer <lay> ^compo <gx> ^commo <egarb2>)
  2288.   -->
  2289.     (modify <h1> ^max <vcom> ^max-net <nn2>)
  2290. )
  2291.  
  2292. (p p95
  2293.     (context ^present propagate-constraint)
  2294.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  2295.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { <garb4> > <gx> } ^com <gy> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2296.     (vertical ^status nil ^net-name { <nn2> <> <nn> <> nil } ^min { <garb1> <= <gy> } ^max { <garb2> >= <gy> } ^com <vcom> ^layer <lay> ^compo <garb3> ^commo <gx>)
  2297.   -->
  2298.     (modify <h1> ^min <vcom> ^min-net <nn2>)
  2299. )
  2300.  
  2301. (p p96
  2302.     (context ^present propagate-constraint)
  2303.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  2304.     (horizontal ^status nil ^net-name { <nn2> <> <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <hcom> ^layer <lay> ^compo <gy> ^commo <garb3>)
  2305.     { <v1> (vertical ^net-name nil ^min <garb4> ^max { <gy> > <garb4> } ^com <gx> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2306.   -->
  2307.     (modify <v1> ^max <hcom> ^max-net <nn2>)
  2308. )
  2309.  
  2310. (p p97
  2311.     (context ^present propagate-constraint)
  2312.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  2313.     (horizontal ^status nil ^net-name { <nn2> <> <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <hcom> ^layer <lay> ^compo <garb3> ^commo <gy>)
  2314.     { <v1> (vertical ^net-name nil ^min <gy> ^max { <garb4> > <gy> } ^com <gx> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2315.   -->
  2316.     (modify <v1> ^min <hcom> ^min-net <nn2>)
  2317. )
  2318.  
  2319. (p p98
  2320.     (context ^present << propagate-constraint extend-pins random1 check-for-routed-net >>)
  2321.     { <h1> (horizontal ^min <min> ^max <= <min>) }
  2322.   -->
  2323.     (remove <h1>)
  2324. )
  2325.  
  2326. (p p99
  2327.     (context ^present << propagate-constraint extend-pins random1 check-for-routed-net >>)
  2328.     { <v1> (vertical ^min <min> ^max <= <min>) }
  2329.   -->
  2330.     (remove <v1>)
  2331. )
  2332.  
  2333. (p p100
  2334.     { <h1> (horizontal ^min <min> ^max <= <min>) }
  2335.   -->
  2336.     (remove <h1>)
  2337. )
  2338.  
  2339. (p p101
  2340.     { <v1> (vertical ^min <min> ^max <= <min>) }
  2341.   -->
  2342.     (remove <v1>)
  2343. )
  2344.  
  2345. (p p102
  2346.     (context ^present propagate-constraint)
  2347.     { <h1> (horizontal ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com <com1> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2348.   - (vertical ^status nil ^min <= <com1> ^max >= <com1> ^com <min1>)
  2349.   - (horizontal ^status nil ^min < <min1> ^max >= <min1> ^com <com1>)
  2350.     (vertical ^status nil ^net-name <garb1> ^min { <vmin> <= <com1> } ^max { >= <com1> > <vmin> } ^com { <com2> > <min1> <= <max1> } ^layer <garb2> ^compo <egarb4> ^commo <egarb5>)
  2351.   - (vertical ^status nil ^min <= <com1> ^max >= <com1> ^com { < <com2> >= <min1> })
  2352.   -->
  2353.     (modify <h1> ^min <com2> ^min-net nil)
  2354. )
  2355.  
  2356. (p p103
  2357.     (context ^present propagate-constraint)
  2358.     { <v1> (vertical ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com <com1> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2359.   - (horizontal ^status nil ^min <= <com1> ^max >= <com1> ^com <min1>)
  2360.   - (vertical ^status nil ^min < <min1> ^max >= <min1> ^com <com1>)
  2361.     (horizontal ^status nil ^net-name <garb1> ^min { <hmin> <= <com1> } ^max { <garb2> >= <com1> > <hmin> } ^com { <com2> > <min1> <= <max1> } ^layer <garb3> ^compo <egarb4> ^commo <egarb5>)
  2362.   - (horizontal ^status nil ^min <= <com1> ^max >= <com1> ^com { < <com2> >= <min1> })
  2363.   -->
  2364.     (modify <v1> ^min <com2> ^min-net nil)
  2365. )
  2366.  
  2367. (p p104
  2368.     (context ^present propagate-constraint)
  2369.     { <h1> (horizontal ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com <com1> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  2370.   - (vertical ^status nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  2371.   - (horizontal ^status nil ^min <= <max1> ^max > <max1> ^com <com1>)
  2372.     (vertical ^status nil ^net-name <garb1> ^min { <vmin> <= <com1> } ^max { <garb2> >= <com1> > <vmin> } ^com { <com2> >= <min1> < <max1> } ^layer <egarb1> ^compo <egarb2> ^commo <egarb3>)
  2373.   - (vertical ^status nil ^min <= <com1> ^max >= <com1> ^com { > <com2> <= <max1> })
  2374.   -->
  2375.     (modify <h1> ^max <com2> ^max-net nil)
  2376. )
  2377.  
  2378. (p p105
  2379.     (context ^present propagate-constraint)
  2380.     { <v1> (vertical ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com <com1> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2381.   - (horizontal ^status nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  2382.   - (vertical ^status nil ^min <= <max1> ^max > <max1> ^com <com1>)
  2383.     (horizontal ^status nil ^net-name <garb1> ^min { <hmin> <= <com1> } ^max { <garb2> >= <com1> > <hmin> } ^com { <com2> >= <min1> < <max1> } ^layer <egarb1> ^compo <egarb4> ^commo <egarb5>)
  2384.   - (horizontal ^status nil ^min <= <com1> ^max >= <com1> ^com { > <com2> <= <max1> })
  2385.   -->
  2386.     (modify <v1> ^max <com2> ^max-net nil)
  2387. )
  2388.  
  2389. (p p106
  2390.     (context ^present propagate-constraint)
  2391.     { <h1> (horizontal ^net-name nil ^min <hmin> ^max { <hmax> > <hmin> } ^com <hcom> ^layer <lay> ^compo <egarb6> ^commo <egarb7>) }
  2392.   - (vertical ^com { > <hmin> < <hmax> })
  2393.   - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmax> ^layer <lay>)
  2394.   - (horizontal ^status nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <lay>)
  2395.     (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <hmax> ^layer <> <lay> ^compo <egarb4> ^commo <egarb5>)
  2396.     (vertical ^net-name { <> <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <hmin> ^layer <> <lay> ^compo <egarb2> ^commo <egarb3>)
  2397.   -->
  2398.     (remove <h1>)
  2399. )
  2400.  
  2401. (p p107
  2402.     (context ^present propagate-constraint)
  2403.     { <v1> (vertical ^net-name nil ^min <vmin> ^max { <vmax> > <vmin> } ^com <vcom> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2404.   - (horizontal ^com { > <vmin> < <vmax> })
  2405.   - (horizontal ^status nil ^min <= <vcom> ^max >= <vcom> ^com <vmax> ^layer <lay>)
  2406.   - (vertical ^status nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <lay>)
  2407.     (horizontal ^net-name { <nn1> <> nil } ^min { <garb1> <= <vcom> } ^max { <garb2> >= <vcom> } ^com <vmax> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  2408.     (horizontal ^net-name { <> <nn1> <> nil } ^min { <garb4> <= <vcom> } ^max { <garb5> >= <vcom> } ^com <vmin> ^layer { <garb6> <> <lay> } ^compo <egarb4> ^commo <egarb5>)
  2409.   -->
  2410.     (remove <v1>)
  2411. )
  2412.  
  2413. (p p108
  2414.     (context ^present propagate-constraint)
  2415.     { <h1> (horizontal ^net-name nil ^min <hmin> ^max { <hmax> > <hmin> } ^com <hcom> ^layer <lay> ^compo <egarb6> ^commo <egarb7>) }
  2416.   - (vertical ^com { > <hmin> < <hmax> })
  2417.   - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmin> ^layer <lay>)
  2418.   - (horizontal ^status nil ^min < <hmin> ^max <hmin> ^com <hcom> ^layer <lay>)
  2419.   - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmax> ^layer <lay>)
  2420.   - (horizontal ^status nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <lay>)
  2421.     (vertical ^net-name { <nn1> <> nil } ^min { <garb1> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <hmax> ^layer { <garb3> <> <lay> } ^compo <egarb2> ^commo <egarb3>)
  2422.     (vertical ^net-name { <garb7> <> <nn1> <> nil } ^min { <gabr4> <= <hcom> } ^max { <garb5> >= <hcom> } ^com <hmin> ^layer { <garb6> <> <lay> } ^compo <egarb4> ^commo <egarb5>)
  2423.   -->
  2424.     (remove <h1>)
  2425. )
  2426.  
  2427. (p p109
  2428.     (context ^present propagate-constraint)
  2429.     { <v1> (vertical ^net-name nil ^min <vmin> ^max { <vmax> > <vmin> } ^com <vcom> ^layer <lay> ^compo <egarb6> ^commo <egarb7>) }
  2430.   - (horizontal ^com { > <vmin> < <vmax> })
  2431.   - (horizontal ^status nil ^min <= <vcom> ^max >= <vcom> ^com <vmin> ^layer <lay>)
  2432.   - (vertical ^status nil ^min < <vmin> ^max <vmin> ^com <vcom> ^layer <lay>)
  2433.     (horizontal ^net-name { <nn1> <> nil } ^min { <garb1> <= <vcom> } ^max { <garb2> >= <vcom> } ^com <vmax> ^layer { <garb3> <> <lay> } ^compo <egarb2> ^commo <egarb3>)
  2434.     (horizontal ^net-name { <garb7> <> <nn1> <> nil } ^min { <garb4> <= <vcom> } ^max { <garb5> >= <vcom> } ^com <vmin> ^layer { <garb6> <> <lay> } ^compo <egarb4> ^commo <egarb5>)
  2435.   -->
  2436.     (remove <v1>)
  2437. )
  2438.  
  2439. (p p110
  2440.     (context ^present propagate-constraint)
  2441.     { <h1> (horizontal ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  2442.   - (vertical ^min <= <hcom> ^max >= <hcom> ^com <max2> ^layer <lay>)
  2443.   - (horizontal ^min <max2> ^max > <max2> ^com <hcom> ^layer <lay>)
  2444.   - (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com { > <max1> < <max2> })
  2445.   - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com { > <max1> < <max2> } ^max-net nil)
  2446.   - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com { > <max1> < <max2> } ^min-net nil)
  2447.     (horizontal ^net-name { <nn> <> nil } ^min <garb1> ^max <max1> ^com <hcom> ^layer <lay> ^compo <egarb2> ^commo <egarb3>)
  2448.     (vertical ^net-name { <nn1> <> <nn> <> nil } ^min { <garb4> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <max2> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  2449.   - (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { > <max1> < <max2> })
  2450.   -->
  2451.     (modify <h1> ^max (compute <max2> - 1) ^max-net nil)
  2452. )
  2453.  
  2454. (p p111
  2455.     (context ^present propagate-constraint)
  2456.     { <h1> (horizontal ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  2457.   - (vertical ^min <= <hcom> ^max >= <hcom> ^com <max1> ^layer <lay>)
  2458.   - (horizontal ^min < <max1> ^max <max1> ^com <hcom> ^layer <lay>)
  2459.   - (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com { > <max1> < <max2> })
  2460.   - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com { > <max1> < <max2> } ^max-net nil)
  2461.   - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com { > <max1> < <max2> } ^min-net nil)
  2462.     (horizontal ^net-name { <nn> <> nil } ^min <max2> ^max <garb1> ^com <hcom> ^layer <lay> ^compo <egarb2> ^commo <egarb3>)
  2463.     (vertical ^net-name { <nn1> <> <nn> <> nil } ^min { <garb4> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <max1> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  2464.   - (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { > <max1> < <max2> })
  2465.   -->
  2466.     (modify <h1> ^min (compute <max1> + 1) ^min-net nil)
  2467. )
  2468.  
  2469. (p p112
  2470.     (context ^present propagate-constraint)
  2471.     { <h1> (horizontal ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  2472.   - (vertical ^min <= <hcom> ^max >= <hcom> ^com <max2> ^layer <lay>)
  2473.   - (horizontal ^min <max2> ^max > <max2> ^com <hcom> ^layer <lay>)
  2474.   - (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com { >= <max1> < <max2> })
  2475.   - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com { >= <max1> < <max2> } ^max-net nil)
  2476.   - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com { >= <max1> < <max2> } ^min-net nil)
  2477.   - (horizontal ^min < <max1> ^max <max1> ^com <hcom> ^layer <lay>)
  2478.     (vertical ^net-name { <nn1> <> nil } ^min { <garb1> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <max2> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  2479.   - (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { >= <max1> < <max2> })
  2480.   -->
  2481.     (modify <h1> ^max (compute <max2> - 1) ^max-net nil)
  2482. )
  2483.  
  2484. (p p113
  2485.     (context ^present propagate-constraint)
  2486.     { <h1> (horizontal ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  2487.   - (vertical ^min <= <hcom> ^max >= <hcom> ^com <max1> ^layer <lay>)
  2488.   - (horizontal ^min < <max1> ^max <max1> ^com <hcom> ^layer <lay>)
  2489.   - (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com { > <max1> <= <max2> })
  2490.   - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com { > <max1> <= <max2> } ^max-net nil)
  2491.   - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com { > <max1> <= <max2> } ^min-net nil)
  2492.   - (horizontal ^min <max2> ^max > <max2> ^com <hcom> ^layer <lay>)
  2493.     (vertical ^net-name { <nn1> <> nil } ^min { <garb1> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <max1> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  2494.   - (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { > <max1> <= <max2> })
  2495.   -->
  2496.     (modify <h1> ^min (compute <max1> + 1) ^min-net nil)
  2497. )
  2498.  
  2499. (p p114
  2500.     (context ^present propagate-constraint)
  2501.     { <v1> (vertical ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  2502.     (vertical ^net-name { <nn> <> nil } ^min <garb1> ^max <max1> ^com <hcom> ^layer <lay> ^compo <egarb2> ^commo <egarb3>)
  2503.   - (horizontal ^min <= <hcom> ^max >= <hcom> ^com <max2> ^layer <lay>)
  2504.   - (vertical ^min <max2> ^max > <max2> ^com <hcom> ^layer <lay>)
  2505.   - (horizontal ^net-name nil ^min < <hcom> ^max > <hcom> ^com { > <max1> < <max2> })
  2506.   - (horizontal ^net-name nil ^min < <hcom> ^max <hcom> ^com { > <max1> < <max2> } ^max-net nil)
  2507.   - (horizontal ^net-name nil ^min <hcom> ^max > <hcom> ^com { > <max1> < <max2> } ^min-net nil)
  2508.     (horizontal ^net-name { <nn1> <> <nn> <> nil } ^min { <garb2> <= <hcom> } ^max { <garb3> >= <hcom> } ^com <max2> ^layer { <garb4> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  2509.   - (horizontal ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { > <max1> < <max2> })
  2510.   -->
  2511.     (modify <v1> ^max (compute <max2> - 1) ^max-net nil)
  2512. )
  2513.  
  2514. (p p115
  2515.     (context ^present propagate-constraint)
  2516.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  2517.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^compo <gy>)
  2518.     { <v1> (vertical ^net-name nil ^min <vmin> ^max { <gy> > <vmin> } ^com <gx> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2519.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { >= <vmin> < <gy> })
  2520.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { >= <vmin> < <gy> } ^max-net nil)
  2521.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { >= <vmin> < <gy> } ^min-net nil)
  2522.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <vmin> < <gy> })
  2523.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <vmin> ^max >= <vmin> ^com <gx>)
  2524.   -->
  2525.     (modify <v1> ^max (compute <gy> - 1) ^max-net nil)
  2526. )
  2527.  
  2528. (p p116
  2529.     (context ^present propagate-constraint)
  2530.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  2531.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { <max2> > <gx> } ^com <gy> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  2532.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> <= <max2> } ^min-net nil)
  2533.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> <= <max2> })
  2534.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> <= <max2> } ^max-net nil)
  2535.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> <= <max2> })
  2536.   -->
  2537.     (modify <h1> ^min (compute <gx> + 1) ^min-net nil)
  2538. )
  2539.  
  2540. (p p117
  2541.     (context ^present propagate-constraint)
  2542.     { <v1> (vertical ^net-name nil ^min <vmin> ^max { <vmax> > <vmin> } ^com <vcom> ^layer <lay> ^min-net { <nn> <> nil }) }
  2543.     (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { <hmax> >= <vcom> > <hmin> } ^com <vmax> ^layer <lay> ^commo <vmin> ^min-net { <> <nn> <> nil } ^max-net { <> <nn> <> nil })
  2544.   - (vertical ^net-name nil ^min < <vmax> ^max > <vmax> ^com { > <hmin> < <hmax> })
  2545.   - (vertical ^net-name nil ^min < <vmax> ^max <vmax> ^com { > <hmin> < <vcom> } ^max-net nil)
  2546.   - (vertical ^net-name nil ^min < <vmax> ^max <vmax> ^com { > <vcom> < <hmax> } ^max-net nil)
  2547.   - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com { > <hmin> < <hmax> } ^min-net nil)
  2548.   - (vertical ^net-name { <nn> <> nil } ^min <= <vmax> ^max >= <vmax> ^com { > <hmin> < <hmax> })
  2549.   -->
  2550.     (remove <v1>)
  2551. )
  2552.  
  2553. (p p118
  2554.     (context ^present propagate-constraint)
  2555.     (vertical ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay1> ^compo <cpo1> ^commo <cmo1>)
  2556.   - (vertical ^net-name nil ^com <com1>)
  2557.   - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com > <max1>)
  2558.   - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com < <min1>)
  2559.     { <h1> (horizontal ^net-name nil ^min { <min2> < <com1> } ^max { <max2> > <com1> > <min2> } ^com { <com2> >= <min1> <= <max1> } ^layer { <lay2> <> <lay1> } ^compo <cpo2> ^commo <cmo2>) }
  2560.   - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com { >= <min1> <= <max1> } ^layer <lay2>)
  2561.     { <t1> (to-be-routed ^net-name { <nn2> <> <nn1> } ^no-of-attached-pins <nap>) }
  2562.   - (horizontal ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
  2563.     (pin ^net-name <nn2> ^pin-x < <com1>)
  2564.     (pin ^net-name <nn2> ^pin-x > <com1>)
  2565.     { <b1> (branch-no <pn>) }
  2566.   -->
  2567.     (make branch-no (compute <pn> + 1))
  2568.     (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
  2569.     (remove <b1>)
  2570.     (make horizontal ^min <cmo1> ^max <cpo1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  2571.     (make horizontal ^min <min2> ^max <cmo1> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
  2572.     (make horizontal ^min <cpo1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
  2573.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <cmo1> ^grid-y <com2> ^grid-layer <lay2> ^came-from east)
  2574.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <cpo1> ^grid-y <com2> ^grid-layer <lay2> ^came-from west)
  2575.     (remove <h1>)
  2576. )
  2577.  
  2578. (p p119
  2579.     (context ^present propagate-constraint)
  2580.     (vertical ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay1> ^compo <cpo1> ^commo <cmo1>)
  2581.   - (vertical ^net-name nil ^com <com1>)
  2582.     { <h1> (horizontal ^net-name nil ^min { <min2> < <com1> } ^max { <max2> > <com1> > <min2> } ^com { <com2> >= <min1> <= <max1> } ^layer { <lay2> <> <lay1> } ^compo <cpo2> ^commo <cmo2>) }
  2583.   - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com > <com2>)
  2584.   - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com < <com2>)
  2585.     { <t1> (to-be-routed ^net-name { <nn2> <> <nn1> } ^no-of-attached-pins <nap>) }
  2586.   - (horizontal ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
  2587.     (pin ^net-name <nn2> ^pin-x < <com1>)
  2588.     (pin ^net-name <nn2> ^pin-x > <com1>)
  2589.     { <b1> (branch-no <pn>) }
  2590.   -->
  2591.     (make branch-no (compute <pn> + 1))
  2592.     (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
  2593.     (remove <b1>)
  2594.     (make horizontal ^min <cmo1> ^max <cpo1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  2595.     (make horizontal ^min <min2> ^max <cmo1> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
  2596.     (make horizontal ^min <cpo1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
  2597.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <cmo1> ^grid-y <com2> ^grid-layer <lay2> ^came-from east)
  2598.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <cpo1> ^grid-y <com2> ^grid-layer <lay2> ^came-from west)
  2599.     (remove <h1>)
  2600. )
  2601.  
  2602. (p p120
  2603.     (context ^present propagate-constraint)
  2604.     (horizontal ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay1> ^compo <cpo1> ^commo <cmo1>)
  2605.   - (horizontal ^net-name nil ^com <com1>)
  2606.   - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com > <max1>)
  2607.   - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com < <min1>)
  2608.     { <v1> (vertical ^net-name nil ^min { <min2> < <com1> } ^max { <max2> > <com1> > <min2> } ^com { <com2> >= <min1> <= <max1> } ^layer { <lay2> <> <lay1> } ^compo <cpo2> ^commo <cmo2>) }
  2609.   - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com { >= <min1> <= <max1> } ^layer <lay2>)
  2610.     { <t1> (to-be-routed ^net-name { <nn2> <> <nn1> } ^no-of-attached-pins <nap>) }
  2611.   - (vertical ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
  2612.     (pin ^net-name <nn2> ^pin-y < <com1>)
  2613.     (pin ^net-name <nn2> ^pin-y > <com1>)
  2614.     { <b1> (branch-no <pn>) }
  2615.   -->
  2616.     (make branch-no (compute <pn> + 1))
  2617.     (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
  2618.     (remove <b1>)
  2619.     (make vertical ^min <cmo1> ^max <cpo1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  2620.     (make vertical ^min <min2> ^max <cmo1> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
  2621.     (make vertical ^min <cpo1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
  2622.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com2> ^grid-y <cmo1> ^grid-layer <lay2> ^came-from north)
  2623.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com2> ^grid-y <cpo1> ^grid-layer <lay2> ^came-from south)
  2624.     (remove <v1>)
  2625. )
  2626.  
  2627. (p p121
  2628.     (context ^present propagate-constraint)
  2629.     (horizontal ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay1> ^compo <cpo1> ^commo <cmo1>)
  2630.   - (horizontal ^net-name nil ^com <com1>)
  2631.     { <v1> (vertical ^net-name nil ^min { <min2> < <com1> } ^max { <max2> > <com1> > <min2> } ^com { <com2> >= <min1> <= <max1> } ^layer { <lay2> <> <lay1> } ^compo <cpo2> ^commo <cmo2>) }
  2632.   - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com > <com2>)
  2633.   - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com < <com2>)
  2634.     { <t1> (to-be-routed ^net-name { <nn2> <> <nn1> } ^no-of-attached-pins <nap>) }
  2635.   - (vertical ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
  2636.     (pin ^net-name <nn2> ^pin-y < <com1>)
  2637.     (pin ^net-name <nn2> ^pin-y > <com1>)
  2638.     { <b1> (branch-no <pn>) }
  2639.   -->
  2640.     (make branch-no (compute <pn> + 1))
  2641.     (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
  2642.     (remove <b1>)
  2643.     (make vertical ^min <cmo1> ^max <cpo1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  2644.     (make vertical ^min <min2> ^max <cmo1> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
  2645.     (make vertical ^min <cpo1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
  2646.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com2> ^grid-y <cmo1> ^grid-layer <lay2> ^came-from north)
  2647.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com2> ^grid-y <cpo1> ^grid-layer <lay2> ^came-from south)
  2648.     (remove <v1>)
  2649. )
  2650.  
  2651. (p p122
  2652.     (context ^present propagate-constraint)
  2653.     { <h1> (horizontal ^net-name nil ^min <min2> ^max { <max2> > <min2> } ^com <com2> ^layer <lay2> ^compo <cpo2> ^commo <cmo2>) }
  2654.   - (horizontal ^net-name nil ^min <= <min2> ^max >= <max2> ^com > <com2>)
  2655.   - (horizontal ^net-name nil ^min <= <min2> ^max >= <max2> ^com < <com2>)
  2656.   - (horizontal ^net-name nil ^min <= <min2> ^max >= <max2> ^com <com2> ^layer <> <lay2>)
  2657.     (congestion ^direction col ^coordinate { <x1> <= <max2> } ^como { <x2> >= <min2> })
  2658.   - (horizontal ^net-name nil ^min <= <x2> ^max >= <x1> ^com > <com2>)
  2659.   - (horizontal ^net-name nil ^min <= <x2> ^max >= <x1> ^com < <com2>)
  2660.   - (horizontal ^net-name nil ^min <= <x2> ^max >= <x1> ^com <com2> ^layer <> <lay2>)
  2661.     { <t1> (to-be-routed ^net-name <nn2> ^no-of-attached-pins <nap>) }
  2662.   - (horizontal ^status nil ^net-name { <nn2> <> nil } ^min <= <x2> ^max >= <x1>)
  2663.     (pin ^net-name <nn2> ^pin-x <= <x2>)
  2664.     (pin ^net-name <nn2> ^pin-x >= <x1>)
  2665.     { <b1> (branch-no <pn>) }
  2666.   - (horizontal ^net-name { <> <nn2> <> nil } ^min <= <x2> ^max >= <x2> ^com <com2> ^layer <lay2>)
  2667.   - (vertical ^net-name { <> <nn2> <> nil } ^min <= <com2> ^max >= <com2> ^com <x2> ^layer <lay2>)
  2668.   - (horizontal ^net-name { <> <nn2> <> nil } ^min <= <x1> ^max >= <x1> ^com <com2> ^layer <lay2>)
  2669.   - (vertical ^net-name { <> <nn2> <> nil } ^min <= <com2> ^max >= <com2> ^com <x1> ^layer <lay2>)
  2670.   -->
  2671.     (make branch-no (compute <pn> + 1))
  2672.     (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
  2673.     (remove <b1>)
  2674.     (make horizontal ^min <x2> ^max <x1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  2675.     (make horizontal ^min <min2> ^max <x2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
  2676.     (make horizontal ^min <x1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
  2677.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <x2> ^grid-y <com2> ^grid-layer <lay2> ^came-from east)
  2678.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <x1> ^grid-y <com2> ^grid-layer <lay2> ^came-from west)
  2679.     (remove <h1>)
  2680. )
  2681.  
  2682. (p p123
  2683.     (context ^present propagate-constraint)
  2684.     { <v1> (vertical ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com { <com1> <> 1 } ^layer <lay1> ^compo <cpo1> ^commo <cmo1> ^min-net <mnn> ^max-net <xnn>) }
  2685.   - (horizontal ^net-name nil ^min < <com1> ^max > <com1>)
  2686.     (horizontal ^net-name nil ^min <com1> ^max { <garb3> > <com1> } ^com { <bhcom> <= <max1> >= <min1> } ^layer <garb4>)
  2687.     (horizontal ^net-name nil ^min { <garb1> < <com1> } ^max <com1> ^com { <thcom> <= <max1> > <bhcom> } ^layer <garb2>)
  2688.   - (horizontal ^net-name nil ^min < <com1> ^max <com1> ^com { < <thcom> > <bhcom> })
  2689.   - (horizontal ^net-name nil ^min <com1> ^max > <com1> ^com { < <thcom> > <bhcom> })
  2690.     { <t1> (to-be-routed ^net-name <nn2> ^no-of-attached-pins <nap>) }
  2691.   - (vertical ^status nil ^net-name { <nn2> <> nil } ^com <com1>)
  2692.   - (horizontal ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
  2693.     (pin ^net-name <nn2> ^pin-x < <com1>)
  2694.     (pin ^net-name <nn2> ^pin-x > <com1>)
  2695.     { <b1> (branch-no <pn>) }
  2696.   -->
  2697.     (make branch-no (compute <pn> + 1))
  2698.     (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
  2699.     (remove <v1> <b1>)
  2700.     (make vertical ^min <min1> ^max <bhcom> ^com <com1> ^layer <lay1> ^commo <cmo1> ^compo <cpo1> ^max-net <nn2> ^min-net <mnn>)
  2701.     (make vertical ^min <thcom> ^max <max1> ^com <com1> ^layer <lay1> ^commo <cmo1> ^compo <cpo1> ^min-net <nn2> ^max-net <xnn>)
  2702.     (make vertical ^min <bhcom> ^max <thcom> ^com <com1> ^layer <lay1> ^commo <cmo1> ^compo <cpo1> ^net-name <nn2> ^pin-name <pn>)
  2703.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com1> ^grid-y <bhcom> ^grid-layer <lay1> ^came-from north)
  2704.     (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com1> ^grid-y <thcom> ^grid-layer <lay1> ^came-from south)
  2705. )
  2706.  
  2707. (p p124
  2708.     (context ^present propagate-constraint)
  2709.     (ff ^net-name <nn1> ^grid-x <gx> ^grid-y <com2> ^grid-layer <lay1> ^pin-name <egarb1>)
  2710.   - (vertical ^net-name nil ^min <= <com2> ^max >= <com2> ^com <gx>)
  2711.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com > <com2>)
  2712.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com < <com2>)
  2713.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min < <gx>)
  2714.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^com < <gx>)
  2715.     { <h1> (horizontal ^net-name nil ^min { <min2> < <gx> } ^max { <max2> >= <gx> > <min2> } ^com <com2> ^layer <lay1> ^compo <cpo2> ^commo <cmo2> ^min-net <nn2>) }
  2716.   -->
  2717.     (make horizontal ^min <min2> ^max (compute <gx> - 1) ^com <com2> ^layer <lay1> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
  2718.     (modify <h1> ^min <gx> ^min-net <nn1>)
  2719. )
  2720.  
  2721. (p p125
  2722.     (context ^present propagate-constraint)
  2723.     (ff ^net-name <nn1> ^grid-x <gx> ^grid-y <com2> ^grid-layer <lay1> ^pin-name <egarb1>)
  2724.   - (vertical ^net-name nil ^min <= <com2> ^max >= <com2> ^com <gx>)
  2725.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com > <com2>)
  2726.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com < <com2>)
  2727.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^max > <gx>)
  2728.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^com > <gx>)
  2729.     { <h1> (horizontal ^net-name nil ^min { <min2> <= <gx> } ^max { <max2> > <gx> > <min2> } ^com <com2> ^layer <lay1> ^compo <cpo2> ^commo <cmo2> ^max-net <nn2>) }
  2730.   -->
  2731.     (make horizontal ^min (compute <gx> + 1) ^max <max2> ^com <com2> ^layer <lay1> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
  2732.     (modify <h1> ^max <gx> ^max-net <nn1>)
  2733. )
  2734.  
  2735. (p p126
  2736.     (context ^present << propagate-constraint extend-total-verti >>)
  2737.     { <ff1> (ff ^can-chng-layer no ^came-from <> east ^net-name <nn> ^grid-x <max1> ^grid-y <com1> ^grid-layer <lay> ^pin-name <pn>) }
  2738.     { <h1> (horizontal ^net-name nil ^min <max1> ^max { <garb1> > <max1> } ^com <com1> ^layer <lay> ^compo <cpo1> ^commo <cmo1>) }
  2739.   - (horizontal ^net-name nil ^min < <max1> ^max <max1> ^com <com1> ^layer <lay>)
  2740.   - (vertical ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  2741.   -->
  2742.     (modify <h1> ^min (compute <max1> + 1) ^min-net <nn>)
  2743.     (make horizontal ^min <max1> ^max (compute <max1> + 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo1> ^compo <cpo1>)
  2744.     (modify <ff1> ^grid-x (compute <max1> + 1) ^came-from west ^can-chng-layer nil)
  2745. )
  2746.  
  2747. (p p127
  2748.     (context ^present << propagate-constraint extend-total-verti >>)
  2749.     { <ff1> (ff ^can-chng-layer no ^came-from <> west ^net-name <nn> ^grid-x <max1> ^grid-y <com1> ^grid-layer <lay> ^pin-name <pn>) }
  2750.     { <h1> (horizontal ^net-name nil ^min <garb1> ^max { <max1> > <garb1> } ^com <com1> ^layer <lay> ^compo <cpo1> ^commo <cmo1>) }
  2751.   - (horizontal ^net-name nil ^min <max1> ^max > <max1> ^com <com1> ^layer <lay>)
  2752.   - (vertical ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  2753.   -->
  2754.     (modify <h1> ^max (compute <max1> - 1) ^max-net <nn>)
  2755.     (make horizontal ^max <max1> ^min (compute <max1> - 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo1> ^compo <cpo1>)
  2756.     (modify <ff1> ^grid-x (compute <max1> - 1) ^came-from east ^can-chng-layer nil)
  2757. )
  2758.  
  2759. (p p128
  2760.     (context ^present << propagate-constraint extend-total-verti >>)
  2761.     { <ff1> (ff ^can-chng-layer no ^came-from <> north ^net-name <nn> ^grid-x <com1> ^grid-y <max1> ^grid-layer <lay> ^pin-name <pn>) }
  2762.     { <v1> (vertical ^net-name nil ^min <max1> ^max { <garb1> > <max1> } ^com <com1> ^layer <lay> ^compo <cpo1> ^commo <cmo1>) }
  2763.   - (vertical ^net-name nil ^min < <max1> ^max <max1> ^com <com1> ^layer <lay>)
  2764.   - (horizontal ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  2765.   -->
  2766.     (modify <v1> ^min (compute <max1> + 1) ^min-net <nn>)
  2767.     (make vertical ^min <max1> ^max (compute <max1> + 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo1> ^compo <cpo1>)
  2768.     (modify <ff1> ^grid-y (compute <max1> + 1) ^came-from south ^can-chng-layer nil)
  2769. )
  2770.  
  2771. (p p129
  2772.     (context ^present << propagate-constraint extend-total-verti >>)
  2773.     { <ff1> (ff ^can-chng-layer no ^came-from <> south ^net-name <nn> ^grid-x <com1> ^grid-y <max1> ^grid-layer <lay> ^pin-name <pn>) }
  2774.     { <v1> (vertical ^net-name nil ^min <garb1> ^max { <max1> > <garb1> } ^com <com1> ^layer <lay> ^compo <cpo1> ^commo <cmo1>) }
  2775.   - (vertical ^net-name nil ^min <max1> ^max > <max1> ^com <com1> ^layer <lay>)
  2776.   - (horizontal ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  2777.   -->
  2778.     (modify <v1> ^max (compute <max1> - 1) ^max-net <nn>)
  2779.     (make vertical ^max <max1> ^min (compute <max1> - 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo1> ^compo <cpo1>)
  2780.     (modify <ff1> ^grid-y (compute <max1> - 1) ^came-from north ^can-chng-layer nil)
  2781. )
  2782.  
  2783. (p p130
  2784.     (context ^present << propagate-constraint extend-total-verti move-ff >>)
  2785.     { <h1> (horizontal ^status nil ^net-name <nn> ^min <min> ^max { <max> > <min> } ^com <com> ^layer <lay> ^pin-name <pn> ^max-net <gar1>) }
  2786.     { <h2> (horizontal ^status nil ^net-name <nn> ^min <max> ^max { <max2> > <max> } ^com <com> ^layer <lay> ^pin-name <pn> ^max-net <nn1>) }
  2787.   -->
  2788.     (modify <h1> ^max <max2> ^max-net <nn1>)
  2789.     (remove <h2>)
  2790. )
  2791.  
  2792. (p p131
  2793.     (context ^present << propagate-constraint extend-total-verti move-ff >>)
  2794.     { <v1> (vertical ^status nil ^net-name <nn> ^min <min> ^max { <max> > <min> } ^com <com> ^layer <lay> ^pin-name <pn> ^max-net <gar1>) }
  2795.     { <v2> (vertical ^status nil ^net-name <nn> ^min <max> ^max { <max2> > <max> } ^com <com> ^layer <lay> ^pin-name <pn> ^max-net <nn1>) }
  2796.   -->
  2797.     (modify <v1> ^max <max2> ^max-net <nn1>)
  2798.     (remove <v2>)
  2799. )
  2800.  
  2801. (p p132
  2802.     (context ^present propagate-constraint)
  2803.     { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <gar1> ^max <max> ^com <com> ^layer <lay> ^pin-name <pn>) }
  2804.     { <h2> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <max2> ^com <com> ^layer <lay> ^pin-name { <pn1> <> <pn> }) }
  2805.     (vertical ^status nil ^net-name { <nn> <> nil } ^pin-name <pn1>)
  2806.   -->
  2807.     (modify <h1> ^max <max2>)
  2808.     (remove <h2>)
  2809. )
  2810.  
  2811. (p p133
  2812.     (context ^present propagate-constraint)
  2813.     { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <gar1> ^com <com> ^layer <lay> ^pin-name <pn>) }
  2814.     { <h2> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min2> ^max <min> ^com <com> ^layer <lay> ^pin-name { <pn1> <> <pn> }) }
  2815.     (vertical ^status nil ^net-name { <nn> <> nil } ^pin-name <pn1>)
  2816.   -->
  2817.     (modify <h1> ^min <min2>)
  2818.     (remove <h2>)
  2819. )
  2820.  
  2821. (p p134
  2822.     (context ^present propagate-constraint)
  2823.     { <v1> (vertical ^status nil ^net-name { <nn> <> nil } ^min <gar1> ^max <max> ^com <com> ^layer <lay> ^pin-name <pn>) }
  2824.     { <v2> (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <max2> ^com <com> ^layer <lay> ^pin-name { <pn1> <> <pn> }) }
  2825.     (horizontal ^status nil ^net-name { <nn> <> nil } ^pin-name <pn1>)
  2826.   -->
  2827.     (modify <v1> ^max <max2>)
  2828.     (remove <v2>)
  2829. )
  2830.  
  2831. (p p135
  2832.     (context ^present propagate-constraint)
  2833.     { <v1> (vertical ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <gar1> ^com <com> ^layer <lay> ^pin-name <pn>) }
  2834.     { <v2> (vertical ^status nil ^net-name { <nn> <> nil } ^min <min2> ^max <min> ^com <com> ^layer <lay> ^pin-name { <pn1> <> <pn> }) }
  2835.     (horizontal ^status nil ^net-name { <nn> <> nil } ^pin-name <pn1>)
  2836.   -->
  2837.     (modify <v1> ^min <min2>)
  2838.     (remove <v2>)
  2839. )
  2840.  
  2841. (p p136
  2842.     (context ^present << propagate-constraint extend-total-verti move-ff >>)
  2843.     { <ff1> (ff ^can-chng-layer no ^came-from <> east ^net-name <nn> ^grid-x <max1> ^grid-y <com1> ^grid-layer <lay> ^pin-name <pn>) }
  2844.     { <h1> (horizontal ^net-name nil ^min <max1> ^max { <garb1> > <max1> } ^com <com1> ^layer <lay> ^compo <cpo> ^commo <cmo>) }
  2845.   - (vertical ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1> ^layer <lay>)
  2846.   - (horizontal ^net-name nil ^min < <max1> ^max <max1> ^com <com1> ^layer <lay>)
  2847.   -->
  2848.     (modify <h1> ^min (compute <max1> + 1) ^min-net <nn>)
  2849.     (make horizontal ^min <max1> ^max (compute <max1> + 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^compo <cpo> ^commo <cmo>)
  2850.     (modify <ff1> ^grid-x (compute <max1> + 1) ^came-from west ^can-chng-layer nil)
  2851. )
  2852.  
  2853. (p p137
  2854.     (context ^present << propagate-constraint extend-total-verti move-ff >>)
  2855.     { <ff1> (ff ^can-chng-layer no ^came-from <> west ^net-name <nn> ^grid-x <max1> ^grid-y <com1> ^grid-layer <lay> ^pin-name <pn>) }
  2856.     { <h1> (horizontal ^net-name nil ^min <garb1> ^max { <max1> > <garb1> } ^com <com1> ^layer <lay> ^compo <cpo> ^commo <cmo>) }
  2857.   - (vertical ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1> ^layer <lay>)
  2858.   - (horizontal ^net-name nil ^min <max1> ^max > <max1> ^com <com1> ^layer <lay>)
  2859.   -->
  2860.     (modify <h1> ^max (compute <max1> - 1) ^max-net <nn>)
  2861.     (make horizontal ^max <max1> ^min (compute <max1> - 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^compo <cpo> ^commo <cmo>)
  2862.     (modify <ff1> ^grid-x (compute <max1> - 1) ^came-from east ^can-chng-layer nil)
  2863. )
  2864.  
  2865. (p p138
  2866.     (context ^present << propagate-constraint extend-total-verti move-ff >>)
  2867.     { <ff1> (ff ^can-chng-layer no ^came-from <> north ^net-name <nn> ^grid-x <com1> ^grid-y <max1> ^grid-layer <lay> ^pin-name <pn>) }
  2868.     { <v1> (vertical ^net-name nil ^min <max1> ^max { <garb1> > <max1> } ^com <com1> ^layer <lay> ^compo <cpo> ^commo <cmo>) }
  2869.   - (horizontal ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1> ^layer <lay>)
  2870.   - (vertical ^net-name nil ^min < <max1> ^max <max1> ^com <com1> ^layer <lay>)
  2871.   -->
  2872.     (modify <v1> ^min (compute <max1> + 1) ^min-net <nn>)
  2873.     (make vertical ^min <max1> ^max (compute <max1> + 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^compo <cpo> ^commo <cmo>)
  2874.     (modify <ff1> ^grid-y (compute <max1> + 1) ^came-from south ^can-chng-layer nil)
  2875. )
  2876.  
  2877. (p p139
  2878.     (context ^present << propagate-constraint extend-total-verti move-ff >>)
  2879.     { <ff1> (ff ^can-chng-layer no ^came-from <> south ^net-name <nn> ^grid-x <com1> ^grid-y <max1> ^grid-layer <lay> ^pin-name <pn>) }
  2880.     { <v1> (vertical ^net-name nil ^min <garb1> ^max { <max1> > <garb1> } ^com <com1> ^layer <lay> ^compo <cpo> ^commo <cmo>) }
  2881.   - (horizontal ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1> ^layer <lay>)
  2882.   - (vertical ^net-name nil ^min <max1> ^max > <max1> ^com <com1> ^layer <lay>)
  2883.   -->
  2884.     (modify <v1> ^max (compute <max1> - 1) ^max-net <nn>)
  2885.     (make vertical ^max <max1> ^min (compute <max1> - 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^compo <cpo> ^commo <cmo>)
  2886.     (modify <ff1> ^grid-y (compute <max1> - 1) ^came-from north ^can-chng-layer nil)
  2887. )
  2888.  
  2889. (p p140
  2890.     (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
  2891.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
  2892.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com> ^max >= <com> ^com { >= <min> <= <max> } ^pin-name { <pn2> <> <pn1> })
  2893.     { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  2894.   - (included <nn> <pn1>)
  2895.     (included <nn> <pn2>)
  2896.   -->
  2897.     (make included <nn> <pn1>)
  2898.     (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
  2899. )
  2900.  
  2901. (p p141
  2902.     (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
  2903.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
  2904.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com> ^max >= <com> ^com { >= <min> <= <max> } ^pin-name { <pn2> <> <pn1> })
  2905.     { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  2906.     (included <nn> <pn1>)
  2907.   - (included <nn> <pn2>)
  2908.   -->
  2909.     (make included <nn> <pn2>)
  2910.     (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
  2911. )
  2912.  
  2913. (p p142
  2914.     (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
  2915.     (vertical ^status nil ^net-name { <nn> <> nil } ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
  2916.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^com <com> ^pin-name { <pn2> <> <pn1> })
  2917.     { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  2918.     (included <nn> <pn1>)
  2919.   - (included <nn> <pn2>)
  2920.   -->
  2921.     (make included <nn> <pn2>)
  2922.     (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
  2923. )
  2924.  
  2925. (p p143
  2926.     (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
  2927.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <egarb4> ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
  2928.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^com <com> ^pin-name { <pn2> <> <pn1> })
  2929.     { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  2930.   - (included <nn> <pn1>)
  2931.     (included <nn> <pn2>)
  2932.   -->
  2933.     (make included <nn> <pn1>)
  2934.     (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
  2935. )
  2936.  
  2937. (p p144
  2938.     (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
  2939.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <egarb4> ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
  2940.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^com <com> ^pin-name { <pn2> <> <pn1> })
  2941.     { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  2942.     (included <nn> <pn1>)
  2943.   - (included <nn> <pn2>)
  2944.   -->
  2945.     (make included <nn> <pn2>)
  2946.     (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
  2947. )
  2948.  
  2949. (p p145
  2950.     (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
  2951.     (horizontal ^status nil ^net-name { <nn> <> nil } ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
  2952.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^com <com> ^pin-name { <pn2> <> <pn1> })
  2953.     { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  2954.   - (included <nn> <pn1>)
  2955.     (included <nn> <pn2>)
  2956.   -->
  2957.     (make included <nn> <pn1>)
  2958.     (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
  2959. )
  2960.  
  2961. (p p146
  2962.     { <c1> (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>) }
  2963.     { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  2964.     { <n1> (net ^net-name <nn> ^net-no-of-pins <nap>) }
  2965.   -->
  2966.     (remove <c1> <t1>)
  2967.     (make join-routed-net <nn>)
  2968.     (modify <n1> ^net-is-routed yes)
  2969. )
  2970.  
  2971. (p p147
  2972.     { <c1> (context ^present check-for-routed-net) }
  2973.   -->
  2974.     (remove <c1>)
  2975.     (make context ^present move-ff)
  2976. )
  2977.  
  2978. (p p148
  2979.     { <con> (context ^present move-ff) }
  2980.   -->
  2981.     (modify <con> ^present set-min-max)
  2982. )
  2983.  
  2984. (p p149
  2985.     { <con> (context ^present set-min-max) }
  2986.   -->
  2987.     (remove <con>)
  2988.     (make context ^present propagate-constraint)
  2989. )
  2990.  
  2991. (p p150
  2992.     (context ^present propagate-constraint)
  2993.     { <c1> (constraint ^pin-name-2 <pn>) }
  2994.   - (ff ^pin-name <pn>)
  2995.   -->
  2996.     (remove <c1>)
  2997. )
  2998.  
  2999. (p p151
  3000.     (context ^present propagate-constraint)
  3001.     { <c1> (constraint ^pin-name-1 <pn>) }
  3002.   - (ff ^pin-name <pn>)
  3003.   -->
  3004.     (remove <c1>)
  3005. )
  3006.  
  3007. (p p152
  3008.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
  3009.     (context ^present << propagate-constraint extend-total-verti move-ff >>)
  3010.     { <ff2> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb2> ^pin-name <> <pn>) }
  3011.   -->
  3012.     (remove <ff1> <ff2>)
  3013. )
  3014.  
  3015. (p p153
  3016.     (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
  3017.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>) }
  3018.     { <ff2> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2> ^grid-layer <lay> ^pin-name <> <pn>) }
  3019.     (congestion ^direction row ^coordinate <gy2> ^como <gy1>)
  3020.     { <v1> (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  3021.   -->
  3022.     (remove <ff1> <ff2>)
  3023.     (make vertical ^min <min> ^max <gy1> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  3024.     (modify <v1> ^min <gy2> ^min-net <nn>)
  3025.     (make vertical ^min <gy1> ^max <gy2> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
  3026. )
  3027.  
  3028. (p p154
  3029.     (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
  3030.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>) }
  3031.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <gy2> ^layer <lay> ^compo <egarb1> ^commo <gy1> ^pin-name <> <pn>)
  3032.   - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2>)
  3033.     { <v1> (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  3034.   -->
  3035.     (remove <ff1>)
  3036.     (make vertical ^min <min> ^max <gy1> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  3037.     (modify <v1> ^min <gy2> ^min-net <nn>)
  3038.     (make vertical ^min <gy1> ^max <gy2> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
  3039. )
  3040.  
  3041. (p p155
  3042.     (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
  3043.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2> ^grid-layer <lay> ^pin-name <pn>) }
  3044.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <gy1> ^layer <lay> ^compo <gy2> ^commo <egarb1> ^pin-name <> <pn>)
  3045.   - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1>)
  3046.     { <v1> (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  3047.   -->
  3048.     (remove <ff1>)
  3049.     (make vertical ^min <min> ^max <gy1> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  3050.     (modify <v1> ^min <gy2> ^min-net <nn>)
  3051.     (make vertical ^min <gy1> ^max <gy2> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
  3052. )
  3053.  
  3054. (p p156
  3055.     (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
  3056.     { <ff1> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>) }
  3057.     (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> > <gx1> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^pin-name <garb1>)
  3058.     { <ff2> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> <= <max> } ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>) }
  3059.     (congestion ^direction col ^coordinate <gx2> ^como <gx1>)
  3060.     { <h1> (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  3061.   -->
  3062.     (remove <ff1> <ff2>)
  3063.     (make horizontal ^min <min> ^max <gx1> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  3064.     (modify <h1> ^min <gx2> ^min-net <nn>)
  3065.     (make horizontal ^min <gx1> ^max <gx2> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
  3066. )
  3067.  
  3068. (p p157
  3069.     (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
  3070.     { <ff1> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>) }
  3071.     (vertical ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gy> } ^max { <garb2> >= <gy> } ^com <gx2> ^layer <lay> ^compo <egarb1> ^commo <gx1> ^pin-name <> <pn>)
  3072.   - (ff ^net-name <nn> ^grid-x <gx2> ^grid-y <gy>)
  3073.     { <h1> (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  3074.   -->
  3075.     (remove <ff1>)
  3076.     (make horizontal ^min <min> ^max <gx1> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  3077.     (modify <h1> ^min <gx2> ^min-net <nn>)
  3078.     (make horizontal ^min <gx1> ^max <gx2> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
  3079. )
  3080.  
  3081. (p p158
  3082.     (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
  3083.     { <ff1> (ff ^net-name <nn> ^grid-x <gx2> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>) }
  3084.     (vertical ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gy> } ^max { <garb2> >= <gy> } ^com <gx1> ^layer <lay> ^compo <gx2> ^commo <egarb1> ^pin-name <> <pn>)
  3085.   - (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy>)
  3086.     { <h1> (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  3087.   -->
  3088.     (remove <ff1>)
  3089.     (make horizontal ^min <min> ^max <gx1> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  3090.     (modify <h1> ^min <gx2> ^min-net <nn>)
  3091.     (make horizontal ^min <gx1> ^max <gx2> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
  3092. )
  3093.  
  3094. (p p159
  3095.     (context ^present propagate-constraint)
  3096.     { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
  3097.   - (vertical ^net-name nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  3098.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  3099.   - (vertical ^net-name <> nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  3100.   - (horizontal ^net-name <> nil ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3101.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { >= <gy> > <vmin> } ^com <gx> ^layer { <lay2> <> <lay> })
  3102.   -->
  3103.     (modify <ff1> ^grid-layer <lay2> ^can-chng-layer no)
  3104. )
  3105.  
  3106. (p p160
  3107.     (context ^present propagate-constraint)
  3108.     { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
  3109.   - (vertical ^net-name nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  3110.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  3111.   - (vertical ^net-name <> nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  3112.   - (horizontal ^net-name <> nil ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3113.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { >= <gx> > <hmin> } ^com <gy> ^layer { <lay2> <> lay> })
  3114.   -->
  3115.     (modify <ff1> ^grid-layer <lay2> ^can-chng-layer no)
  3116. )
  3117.  
  3118. (p p161
  3119.     (context ^present propagate-constraint)
  3120.     { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
  3121.   - (horizontal ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3122.   - (vertical ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  3123.   -->
  3124.     (modify <ff1> ^can-chng-layer no)
  3125. )
  3126.  
  3127. (p p162
  3128.     (context ^present << propagate-constraint move-ff >>)
  3129.     { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
  3130.     (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3131.   -->
  3132.     (modify <ff1> ^can-chng-layer no)
  3133. )
  3134.  
  3135. (p p163
  3136.     (context ^present << propagate-constraint move-ff >>)
  3137.     { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
  3138.     (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  3139.   -->
  3140.     (modify <ff1> ^can-chng-layer no)
  3141. )
  3142.  
  3143. (p p164
  3144.     (context ^present propagate-constraint)
  3145.     { <ff1> (ff ^can-chng-layer no ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn>) }
  3146.     { <ff2> (ff ^can-chng-layer no ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay2> ^pin-name <garb1>) }
  3147.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx2>)
  3148.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy1>)
  3149.     { <h1> (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> >= <gx1> > <hmin> } ^com <gy1> ^layer <lay1> ^compo <hcpo> ^commo <gy2> ^min-net <hnn1>) }
  3150.     { <v1> (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> >= <gy1> > <vmin> } ^com <gx2> ^layer <lay2> ^compo <gx1> ^commo <vcmo> ^min-net <vnn1>) }
  3151.   -->
  3152.     (make horizontal ^min <hmin> ^max <gx2> ^com <gy1> ^commo <gy2> ^compo <hcpo> ^layer <lay1> ^min-net <hnn1> ^max-net <nn>)
  3153.     (modify <h1> ^min <gx1> ^min-net <nn>)
  3154.     (make vertical ^min <vmin> ^max <gy2> ^com <gx2> ^commo <vcmo> ^compo <gx1> ^layer <lay2> ^min-net <vnn1> ^max-net <nn>)
  3155.     (modify <v1> ^min <gy1> ^min-net <nn>)
  3156.     (remove <ff1> <ff2>)
  3157.     (make horizontal ^min <gx2> ^max <gx1> ^com <gy1> ^commo <gy2> ^compo <hcpo> ^layer <lay1> ^net-name <nn> ^pin-name <pn>)
  3158.     (make vertical ^min <gy2> ^max <gy1> ^com <gx2> ^commo <vcmo> ^compo <gx1> ^layer <lay2> ^net-name <nn> ^pin-name <pn>)
  3159. )
  3160.  
  3161. (p p165
  3162.     (context ^present << propagate-constraint extend-pins set-min-max >>)
  3163.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <garb1> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  3164.     { <v1> (vertical ^net-name nil ^min <garb2> ^max { <max> > <garb2> } ^com <com> ^layer <lay> ^max-net <> <nn>) }
  3165.   -->
  3166.     (modify <v1> ^max-net <nn>)
  3167. )
  3168.  
  3169. (p p166
  3170.     (context ^present << propagate-constraint extend-pins set-min-max >>)
  3171.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <min> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  3172.     { <v1> (vertical ^net-name nil ^min <min> ^max { <garb2> > <min> } ^com <com> ^layer <lay> ^min-net <> <nn>) }
  3173.   -->
  3174.     (modify <v1> ^min-net <nn>)
  3175. )
  3176.  
  3177. (p p167
  3178.     (context ^present << propagate-constraint extend-pins set-min-max >>)
  3179.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <max> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  3180.     { <v1> (vertical ^net-name nil ^min { <garb1> < <max> } ^max <max> ^com { >= <hmin> <= <hmax> } ^layer <lay> ^max-net <> <nn>) }
  3181.   -->
  3182.     (modify <v1> ^max-net <nn>)
  3183. )
  3184.  
  3185. (p p168
  3186.     (context ^present << propagate-constraint extend-pins set-min-max >>)
  3187.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <min> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  3188.     { <v1> (vertical ^net-name nil ^min <min> ^max { <garb1> > <min> } ^com { >= <hmin> <= <hmax> } ^layer <lay> ^min-net <> <nn>) }
  3189.   -->
  3190.     (modify <v1> ^min-net <nn>)
  3191. )
  3192.  
  3193. (p p169
  3194.     (context ^present << propagate-constraint extend-pins set-min-max >>)
  3195.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <garb1> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  3196.     { <h1> (horizontal ^net-name nil ^min <garb2> ^max { <max> > <garb2> } ^com <com> ^layer <lay> ^max-net <> <nn>) }
  3197.   -->
  3198.     (modify <h1> ^max-net <nn>)
  3199. )
  3200.  
  3201. (p p170
  3202.     (context ^present << propagate-constraint extend-pins set-min-max >>)
  3203.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <min> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  3204.     { <h1> (horizontal ^net-name nil ^min <min> ^max { <garb2> > <min> } ^com <com> ^layer <lay> ^min-net <> <nn>) }
  3205.   -->
  3206.     (modify <h1> ^min-net <nn>)
  3207. )
  3208.  
  3209. (p p171
  3210.     (context ^present << propagate-constraint extend-pins set-min-max >>)
  3211.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <max> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  3212.     { <h1> (horizontal ^net-name nil ^min <garb1> ^max { <max> > <garb1> } ^com { >= <vmin> <= <vmax> } ^layer <lay> ^max-net <> <nn>) }
  3213.   -->
  3214.     (modify <h1> ^max-net <nn>)
  3215. )
  3216.  
  3217. (p p172
  3218.     (context ^present << propagate-constraint extend-pins set-min-max >>)
  3219.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <min> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  3220.     { <h1> (horizontal ^net-name nil ^min <min> ^max { <garb1> > <min> } ^com { >= <vmin> <= <vmax> } ^layer <lay> ^min-net <> <nn>) }
  3221.   -->
  3222.     (modify <h1> ^min-net <nn>)
  3223. )
  3224.  
  3225. (p p173
  3226.     (context ^present propagate-constraint)
  3227.     { <ff1> (ff ^can-chng-layer no ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>) }
  3228.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <gy2> ^layer <garb3> ^compo <garb4> ^commo <gy1> ^pin-name <> <pn>)
  3229.   - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com <gy2>)
  3230.   - (vertical ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx>)
  3231.     { <v1> (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  3232.   -->
  3233.     (remove <ff1>)
  3234.     (make vertical ^min <min> ^max <gy1> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  3235.     (modify <v1> ^min <gy2> ^min-net <nn>)
  3236.     (make vertical ^min <gy1> ^max <gy2> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
  3237. )
  3238.  
  3239. (p p174
  3240.     (join-routed-net <nn>)
  3241.     { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <com> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
  3242.     { <h2> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <max2> ^com <com> ^layer <lay> ^compo <garb3> ^commo <garb4>) }
  3243.   -->
  3244.     (modify <h1> ^max <max2>)
  3245.     (remove <h2>)
  3246. )
  3247.  
  3248. (p p175
  3249.     (join-routed-net <nn>)
  3250.     { <v1> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <max> ^com <com> ^layer <lay> ^compo <garb2> ^commo <garb3>) }
  3251.     { <v2> (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <max2> ^com <com> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
  3252.   -->
  3253.     (modify <v1> ^max <max2>)
  3254.     (remove <v2>)
  3255. )
  3256.  
  3257. (p p176
  3258.     { <j1> (join-routed-net <nn>) }
  3259.   -->
  3260.     (remove <j1>)
  3261.     (make move-via <nn>)
  3262. )
  3263.  
  3264. (p p177
  3265.     (context ^present propagate-constraint)
  3266.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <vlayer> ^pin-name <egarb1>)
  3267.     (horizontal ^net-name nil ^min <hmin2> ^max { <gx> > <hmin2> } ^com <vmax> ^layer <vlayer> ^compo <egarb8> ^commo <egarb9>)
  3268.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { < <vmax> > <gy> })
  3269.     { <v1> (vertical ^net-name nil ^min { <garb1> <= <gy> } ^max { <vmax> > <garb1> > <gy> } ^com <gx> ^layer <vlayer> ^commo <cmo> ^compo <cpo> ^max-net <maxn>) }
  3270.     (horizontal ^net-name { <> <nn> <> nil } ^min { <hmin1> <= <gx> } ^max >= <gx> ^com <vmax> ^layer <> <vlayer>)
  3271.     (vertical ^net-name { <> <nn> <> nil } ^min <= <vmax> ^max >= <vmax> ^com { <vcom> < <gx> >= <hmin1> >= <hmin2> } ^layer <vlayer>)
  3272.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com <vmax>)
  3273.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { < <vmax> > <gy> } ^max-net nil)
  3274.   - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <gx>)
  3275.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmax> ^max > <vmax> ^com <gx>)
  3276.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <gx> ^max > <gx> ^com <vmax>)
  3277.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { < <vmax> > <gy> } ^min-net nil)
  3278.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { < <vmax> > <gy> })
  3279.   - (vertical ^net-name nil ^min < <vmax> ^max > <vmax> ^com { < <gx> > <vcom> })
  3280.   - (vertical ^net-name nil ^min < <vmax> ^max <vmax> ^com { < <gx> > <vcom> } ^max-net nil)
  3281.   - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com { < <gx> > <vcom> } ^min-net nil)
  3282.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <vmax> ^max >= <vmax> ^com { < <gx> > <vcom> })
  3283.   -->
  3284.     (make vertical ^min (compute <gy> + 1) ^max <vmax> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <vlayer> ^max-net <maxn>)
  3285.     (modify <v1> ^max <gy> ^max-net <nn>)
  3286. )
  3287.  
  3288. (p p178
  3289.     (context ^present propagate-constraint)
  3290.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <layer> ^pin-name <pn>)
  3291.     { <h1> (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> > <gx> > <hmin> } ^com <gy> ^layer <layer> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  3292.     (vertical ^net-name { <> <nn> <> nil } ^min <cpo> ^max { <garb2> >= <cpo> } ^com <vcom> ^layer <layer1> ^compo <vcpo> ^commo <gx>)
  3293.     (horizontal ^net-name { <> <nn> <> nil } ^min { <garb3> <= <vcom> } ^max { <garb4> >= <vcom> } ^com <cpo> ^layer <> <layer1> ^compo <garb5> ^commo <gy>)
  3294.     (vertical ^net-name { <> <nn> <> nil } ^min { <garb6> <= <cmo> } ^max <cmo> ^com <vcom> ^layer <layer2> ^compo <vcpo> ^commo <gx>)
  3295.     (horizontal ^net-name { <> <nn> <> nil } ^min { <garb7> <= <vcom> } ^max { <garb8> >= <vcom> } ^com <cmo> ^layer <> <layer2> ^compo <gy> ^commo <garb9>)
  3296.     (vertical ^net-name { <> <nn> <> nil } ^min { <garb13> <= <gy> } ^max { <garb14> >= <gy> } ^com <vcpo> ^layer <layer3> ^compo <garb10> ^commo <vcom>)
  3297.     (horizontal ^net-name { <> <nn> <> nil } ^min { <garb11> <= <vcpo> } ^max { <garb12> >= <vcpo> } ^com <gy> ^layer <> <layer3> ^compo <cpo> ^commo <cmo>)
  3298.   -->
  3299.     (make horizontal ^min (compute <gx> + 1) ^max <hmax> ^com <gy> ^compo <cpo> ^commo <cmo> ^layer <layer> ^max-net <mn>)
  3300.     (modify <h1> ^max <gx> ^max-net <nn>)
  3301. )
  3302.  
  3303. (p p179
  3304.     (context ^present propagate-constraint)
  3305.     { <ff1> (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <pn>) }
  3306.     (vertical ^net-name { <> <nn> <> nil } ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy> } ^com <vcom> ^layer <lay2> ^compo <garb1> ^commo <gx>)
  3307.     (vertical ^net-name { <> <nn> <> nil } ^min { <vmax2> > <gy> <= <vmax> } ^max <garb4> ^com <gx> ^layer <lay4>)
  3308.     (vertical ^net-name { <> <nn> <> nil } ^min <garb2> ^max { <vmin2> < <gy> >= <vmin> } ^com <gx> ^layer <lay3>)
  3309.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmin2> < <gy> })
  3310.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmin2> < <gy> } ^layer <> <lay2> ^min-net nil)
  3311.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmin2> < <gy> } ^max-net nil)
  3312.   - (horizontal ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { > <vmin2> < <gy> })
  3313.     (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <vmin2> ^layer <> <lay3>)
  3314.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmax2> })
  3315.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmax2> } ^layer <> <lay2> ^min-net nil)
  3316.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmax2> } ^max-net nil)
  3317.   - (horizontal ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmax2> })
  3318.     (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <vmax2> ^layer <> <lay4>)
  3319.     { <h1> (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> >= <vcom> > <hmin> } ^com <gy> ^layer { <lay5> <> <lay2> } ^compo <hcpo> ^commo <hcmo> ^max-net <mn>) }
  3320.   -->
  3321.     (make horizontal ^layer <lay5> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <nn> ^max-net <mn> ^min <vcom> ^max <hmax>)
  3322.     (modify <h1> ^max <gx> ^max-net <nn>)
  3323.     (make horizontal ^layer <lay5> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn> ^min <gx> ^max <vcom>)
  3324.     (modify <ff1> ^grid-x <vcom> ^grid-layer <lay5> ^can-chng-layer no)
  3325. )
  3326.  
  3327. (p p180
  3328.     (context ^present propagate-constraint)
  3329.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <vmax> ^com <vcom> ^layer <lay1> ^compo <cpo> ^commo <cmo>)
  3330.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <garb2> <= <vcom> } ^max { <garb3> >= <vcom> } ^com <vmax> ^layer { <garb4> <> <lay1> })
  3331.     (vertical ^net-name { <nn1> <> <nn> <> nil } ^min { <vmin> > <vmax> } ^max <garb5> ^com <vcom> ^layer <lay2>)
  3332.     (horizontal ^net-name { <nn1> <> nil } ^min { <garb6> <= <vcom> } ^max { <garb7> >= <vcom> } ^com <vmin> ^layer { <garb8> <> <lay2> })
  3333.     (vertical ^net-name { <> <nn> <> nil } ^min { <vmin2> <= <vmax> } ^max { <vmax2> >= <vmin> } ^com <cpo> ^layer <lay3>)
  3334.     { <v1> (vertical ^net-name nil ^min <vmax> ^max { <vmax3> > <vmax> } ^com <vcom> ^layer <lay3>) }
  3335.   - (vertical ^net-name nil ^min <vmax3> ^com <vcom>)
  3336.   - (horizontal ^net-name nil ^min < <vcom> ^max > <vcom> ^com { > <vmax> <= <vmax3> })
  3337.   - (horizontal ^net-name nil ^min <vcom> ^max > <vcom> ^com { > <vmax> <= <vmax3> } ^layer <> <lay3> ^min-net nil)
  3338.   - (horizontal ^net-name nil ^min < <vcom> ^max <vcom> ^com { > <vmax> <= <vmax3> } ^max-net nil)
  3339.   - (horizontal ^net-name { <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com { > <vmax> <= <vmax3> })
  3340.   -->
  3341.     (modify <v1> ^min (compute <vmax> + 1) ^min-net nil)
  3342. )
  3343.  
  3344. (p p181
  3345.     (context ^present propagate-constraint)
  3346.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>) }
  3347.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y <garb1> ^grid-layer <lay> ^pin-name <> <pn>)
  3348.   - (vertical ^com { > <gx> < <gx2> })
  3349.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { <egarb1> > <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  3350.   - (vertical ^net-name nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  3351.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  3352.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy>)
  3353.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2>)
  3354.   -->
  3355.     (modify <h1> ^min (compute <gx> + 1) ^min-net <nn>)
  3356.     (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx> ^com <gy> ^max (compute <gx> + 1) ^commo <hcmo> ^compo <hcpo> ^layer <lay>)
  3357.     (modify <ff1> ^grid-x (compute <gx> + 1) ^came-from west)
  3358. )
  3359.  
  3360. (p p182
  3361.     (context ^present propagate-constraint)
  3362.     { <v3> (vertical ^net-name nil ^min <vmin2> ^max { <vmax2> > <vmin2> } ^com <vcom> ^layer <garb1> ^compo <vcpo> ^commo <egarb1>) }
  3363.     (congestion ^direction row ^coordinate <vmax2> ^como <vmin2>)
  3364.   - (horizontal ^status nil ^min < <vcom> ^max >= <vcom> ^com { <= <vmax2> >= <vmin2> })
  3365.   - (vertical ^status nil ^min <vmax2> ^max > <vmax2> ^com <vcom>)
  3366.   - (vertical ^status nil ^max <vmin2> ^min < <vmin2> ^com <vcom>)
  3367.     (vertical ^net-name nil ^min { <vmin> <= <vmin2> } ^max { > <vmin> >= <vmax2> } ^com <vcpo> ^layer <lay>)
  3368.     (horizontal ^net-name nil ^min <vcom> ^max { <egarb2> > <vcom> } ^com <vmax2> ^layer <lay> ^compo <egarb3> ^commo <egarb4>)
  3369.     (horizontal ^net-name nil ^min <vcom> ^max { <egarb5> > <vcom> } ^com <vmin2> ^layer <lay> ^compo <egarb6> ^commo <egarb7>)
  3370.   -->
  3371.     (remove <v3>)
  3372. )
  3373.  
  3374. (p p183
  3375.     (context ^present propagate-constraint)
  3376.     { <v3> (vertical ^net-name nil ^min <vmin2> ^max { <vmax2> > <vmin2> } ^com <vcom> ^layer <garb1> ^compo <garb2> ^commo <vcmo>) }
  3377.     (congestion ^direction row ^coordinate <vmax2> ^como <vmin2>)
  3378.   - (horizontal ^status nil ^min <= <vcom> ^max > <vcom> ^com { <= <vmax2> >= <vmin2> })
  3379.   - (vertical ^status nil ^min <vmax2> ^max > <vmax2> ^com <vcom>)
  3380.   - (vertical ^status nil ^max <vmin2> ^min < <vmin2> ^com <vcom>)
  3381.     (vertical ^net-name nil ^min { <vmin> <= <vmin2> } ^max { > <vmin> >= <vmax2> } ^com <vcmo> ^layer <lay>)
  3382.     (horizontal ^net-name nil ^min <egarb1> ^max { <vcom> > <egarb1> } ^com <vmax2> ^layer <lay> ^compo <egarb2> ^commo <egarb3>)
  3383.     (horizontal ^net-name nil ^min <egarb6> ^max { <vcom> > <egarb6> } ^com <vmin2> ^layer <lay> ^compo <egarb4> ^commo <egarb5>)
  3384.   -->
  3385.     (remove <v3>)
  3386. )
  3387.  
  3388. (p p184
  3389.     (context ^present propagate-constraint)
  3390.     { <h3> (horizontal ^net-name nil ^min <hmin2> ^max { <hmax2> > <hmin2> } ^com <hcom> ^layer <garb1> ^compo <hcpo> ^commo <egarb1>) }
  3391.     (congestion ^direction col ^coordinate <hmax2> ^como <hmin2>)
  3392.   - (vertical ^status nil ^min < <hcom> ^max >= <hcom> ^com { <= <hmax2> >= <hmin2> })
  3393.   - (horizontal ^status nil ^min <hmax2> ^max > <hmax2> ^com <hcom>)
  3394.   - (horizontal ^status nil ^max <hmin2> ^min < <hmin2> ^com <hcom>)
  3395.     (horizontal ^net-name nil ^min { <hmin> <= <hmin2> } ^max { > <hmin> >= <hmax2> } ^com <hcpo> ^layer <lay>)
  3396.     (vertical ^net-name nil ^min <hcom> ^max { <egarb2> > <hcom> } ^com <hmax2> ^layer <lay> ^compo <egarb3> ^commo <egarb4>)
  3397.     (vertical ^net-name nil ^min <hcom> ^max { <egarb5> > <hcom> } ^com <hmin2> ^layer <lay> ^compo <egarb6> ^commo <egarb7>)
  3398.   -->
  3399.     (remove <h3>)
  3400. )
  3401.  
  3402. (p p185
  3403.     (context ^present propagate-constraint)
  3404.     { <h3> (horizontal ^net-name nil ^min <hmin2> ^max { <hmax2> > <hmin2> } ^com <hcom> ^layer <garb1> ^compo <garb2> ^commo <hcmo>) }
  3405.     (congestion ^direction col ^coordinate <hmax2> ^como <hmin2>)
  3406.   - (vertical ^status nil ^min <= <hcom> ^max > <hcom> ^com { <= <hmax2> >= <hmin2> })
  3407.   - (horizontal ^status nil ^min <hmax2> ^max > <hmax2> ^com <hcom>)
  3408.   - (horizontal ^status nil ^max <hmin2> ^min < <hmin2> ^com <hcom>)
  3409.     (horizontal ^net-name nil ^min { <hmin> <= <hmin2> } ^max { > <hmin> >= <hmax2> } ^com <hcmo> ^layer <lay>)
  3410.     (vertical ^net-name nil ^min <egarb1> ^max { <hcom> > <egarb1> } ^com <hmax2> ^layer <lay> ^compo <egarb3> ^compo <egarb4>)
  3411.     (vertical ^net-name nil ^min <egarb5> ^max { <hcom> > <egarb5> } ^com <hmin2> ^layer <lay> ^compo <egarb6> ^commo <egarb7>)
  3412.   -->
  3413.     (remove <h3>)
  3414. )
  3415.  
  3416. (p p538
  3417.     (finally-routed <nn>)
  3418.     { <i1> (included <nn>) }
  3419.   -->
  3420.     (remove <i1>)
  3421. )
  3422.  
  3423. (p p539
  3424.     (finally-routed <nn>)
  3425.     { <ff1> (ff ^net-name <nn>) }
  3426.   -->
  3427.     (remove <ff1>)
  3428. )
  3429.  
  3430. (p p540
  3431.     (finally-routed <nn>)
  3432.     { <c1> (constraint ^constraint-type << vertical horizontal >> ^net-name-1 <nn>) }
  3433.   -->
  3434.     (remove <c1>)
  3435. )
  3436.  
  3437. (p p541
  3438.     (finally-routed <nn>)
  3439.     { <c1> (constraint ^constraint-type << vertical horizontal >> ^net-name-2 <nn>) }
  3440.   -->
  3441.     (remove <c1>)
  3442. )
  3443.  
  3444. (p p542
  3445.     (finally-routed <nn>)
  3446.     { <c> (<< horizontal-cycle vertical-cycle >> <nn>) }
  3447.   -->
  3448.     (remove <c>)
  3449. )
  3450.  
  3451. (p p543
  3452.     (finally-routed <nn>)
  3453.     { <c1> (constraint ^constraint-type << vertical horizontal >> ^net-name-2 <nn>) }
  3454.   -->
  3455.     (remove <c1>)
  3456. )
  3457.  
  3458. (p p544
  3459.     (finally-routed <nn>)
  3460.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <garb1> ^commo <garb2>)
  3461.     { <h1> (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { <hmax> > <hmin> >= <vcom> } ^com { <hcom> >= <vmin> <= <vmax> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <nn1>) }
  3462.   -->
  3463.     (make horizontal ^min <hmin> ^max (compute <vcom> - 1) ^com <hcom> ^compo <hcpo> ^commo <hcmo> ^layer <lay> ^min-net <nn1>)
  3464.     (modify <h1> ^min (compute <vcom> + 1) ^min-net nil)
  3465. )
  3466.  
  3467. (p p545
  3468.     (finally-routed <nn>)
  3469.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <garb1> ^commo <garb2>)
  3470.     { <v1> (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { <vmax> > <vmin> >= <hcom> } ^com { <vcom> >= <hmin> <= <hmax> } ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <nn1>) }
  3471.   -->
  3472.     (make vertical ^min <vmin> ^max (compute <hcom> - 1) ^com <vcom> ^compo <vcpo> ^commo <vcmo> ^layer <lay> ^min-net <nn1>)
  3473.     (modify <v1> ^min (compute <hcom> + 1) ^min-net nil)
  3474. )
  3475.  
  3476. (p p546
  3477.     (finally-routed <nn>)
  3478.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <rmax> ^com <com> ^layer <lay> ^compo <garb4> ^commo <garb3>)
  3479.     { <v1> (vertical ^net-name nil ^min <rmax> ^max { <garb2> > <rmax> } ^com <com> ^layer <lay> ^compo <garb6> ^commo <garb5>) }
  3480.   -->
  3481.     (modify <v1> ^min (compute <rmax> + 1) ^min-net nil)
  3482. )
  3483.  
  3484. (p p547
  3485.     (finally-routed <nn>)
  3486.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <rmin> ^max <garb1> ^com <com> ^layer <lay> ^compo <garb3> ^commo <garb4>)
  3487.     { <v1> (vertical ^net-name nil ^min <garb2> ^max { <rmin> > <garb2> } ^com <com> ^layer <lay> ^compo <garb5> ^commo <garb6>) }
  3488.   -->
  3489.     (modify <v1> ^max (compute <rmin> - 1) ^max-net nil)
  3490. )
  3491.  
  3492. (p p548
  3493.     (finally-routed <nn>)
  3494.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <rmax> ^com <com> ^layer <lay> ^compo <garb3> ^commo <garb4>)
  3495.     { <h1> (horizontal ^net-name nil ^min <rmax> ^max { <garb2> > <rmax> } ^com <com> ^layer <lay> ^compo <garb5> ^commo <garb6>) }
  3496.   -->
  3497.     (modify <h1> ^min (compute <rmax> + 1) ^min-net nil)
  3498. )
  3499.  
  3500. (p p549
  3501.     (finally-routed <nn>)
  3502.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <rmin> ^max <garb1> ^com <com> ^layer <lay> ^compo <garb3> ^commo <garb4>)
  3503.     { <h1> (horizontal ^net-name nil ^min <garb2> ^max { <rmin> > <garb2> } ^com <com> ^layer <lay> ^compo <garb5> ^commo <garb6>) }
  3504.   -->
  3505.     (modify <h1> ^max (compute <rmin> - 1) ^max-net nil)
  3506. )
  3507.  
  3508. (p p550
  3509.     { <f1> (finally-routed <nn>) }
  3510.   -->
  3511.     (remove <f1>)
  3512.     (make context ^present remove-routed-net-segments <nn>)
  3513. )
  3514.  
  3515. (p p551
  3516.     (context ^present remove-routed-net-segments <nn>)
  3517.     { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <c> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
  3518.   -->
  3519.     (modify <h1> ^status routed)
  3520.     (write (crlf) |hor | <nn> <min> <max> <c> <lay>)
  3521. )
  3522.  
  3523. (p p552
  3524.     (context ^present remove-routed-net-segments <nn>)
  3525.     { <v1> (vertical ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <c> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
  3526.   -->
  3527.     (modify <v1> ^status routed)
  3528.     (write (crlf) |ver | <nn> <min> <max> <c> <lay>)
  3529. )
  3530.  
  3531. (p p553
  3532.     (context ^present remove-routed-net-segments <nn>)
  3533.     { <h> (horizontal-s ^net-name <nn>) }
  3534.   -->
  3535.     (remove <h>)
  3536. )
  3537.  
  3538. (p p554
  3539.     (context ^present remove-routed-net-segments <nn>)
  3540.     { <v> (vertical-s ^net-name <nn>) }
  3541.   -->
  3542.     (remove <v>)
  3543. )
  3544.  
  3545. (p p555
  3546.     (context ^present remove-routed-net-segments <nn>)
  3547.     { <p> (pin ^net-name <nn>) }
  3548.   -->
  3549.     (remove <p>)
  3550. )
  3551.  
  3552. (p p556
  3553.     (context ^present remove-routed-net-segments <nn>)
  3554.     { <n> (net ^net-name <nn>) }
  3555.   -->
  3556.     (remove <n>)
  3557. )
  3558.  
  3559. (p p557
  3560.     { <c1> (context ^present remove-routed-net-segments) }
  3561.   -->
  3562.     (remove <c1>)
  3563.     (make context ^present check-for-routed-net)
  3564. )
  3565.  
  3566. (p p32
  3567.     (context ^present propagate-constraint)
  3568.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-top-pins 1 ^no-of-bottom-pins 1)
  3569.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
  3570.     { <ff> (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  3571.     { <v> (vertical ^net-name nil ^min <gy2> ^max > <gy2> ^com <gx2> ^layer <lay> ^commo <cmo> ^compo <gx1> ^min-net <garb2>) }
  3572.   - (horizontal ^net-name nil ^min <= <gx2> ^max >= <gx1> ^com <gy2> ^layer <lay>)
  3573.     (congestion ^direction row ^coordinate <gy3> ^como <gy2>)
  3574.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy3> ^max >= <gy3> ^com <gx2> ^layer <lay>)
  3575.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy3> ^layer <lay>)
  3576.   -->
  3577.     (modify <v> ^min <gy3> ^min-net <nn>)
  3578.     (make vertical ^net-name <nn> ^pin-name <pn2> ^min <gy2> ^max <gy3> ^com <gx2> ^compo <gx1> ^commo <cmo> ^layer <lay>)
  3579.     (modify <ff> ^grid-y <gy3> ^can-chng-layer nil ^came-from south)
  3580. )
  3581.  
  3582. (p p33
  3583.     (context ^present propagate-constraint)
  3584.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-top-pins 1 ^no-of-bottom-pins 1)
  3585.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
  3586.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  3587.     { <v> (vertical ^net-name nil ^min < <gy1> ^max <gy1> ^com <gx1> ^layer <lay> ^commo <gx2> ^compo <cpo> ^min-net <garb2>) }
  3588.   - (horizontal ^net-name nil ^min <= <gx2> ^max >= <gx1> ^com <gy1> ^layer <lay>)
  3589.     (congestion ^direction row ^coordinate <gy1> ^como <gy3>)
  3590.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy3> ^max >= <gy3> ^com <gx1> ^layer <lay>)
  3591.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy3> ^layer <lay>)
  3592.   -->
  3593.     (modify <v> ^max <gy3> ^max-net <nn>)
  3594.     (make vertical ^net-name <nn> ^pin-name <pn1> ^min <gy3> ^max <gy1> ^com <gx1> ^compo <cpo> ^commo <gx2> ^layer <lay>)
  3595.     (modify <ff> ^grid-y <gy3> ^can-chng-layer nil ^came-from north)
  3596. )
  3597.  
  3598. (p p34
  3599.     (context ^present propagate-constraint)
  3600.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-top-pins 1 ^no-of-bottom-pins 1)
  3601.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
  3602.     { <ff> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  3603.     { <v> (vertical ^net-name nil ^min <gy2> ^max > <gy2> ^com <gx2> ^layer <lay> ^commo <gx1> ^compo <cpo> ^min-net <garb2>) }
  3604.   - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com <gy2> ^layer <lay>)
  3605.     (congestion ^direction row ^coordinate <gy3> ^como <gy2>)
  3606.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy3> ^max >= <gy3> ^com <gx2> ^layer <lay>)
  3607.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy3> ^layer <lay>)
  3608.   -->
  3609.     (modify <v> ^min <gy3> ^min-net <nn>)
  3610.     (make vertical ^net-name <nn> ^pin-name <pn2> ^min <gy2> ^max <gy3> ^com <gx2> ^compo <cpo> ^commo <gx1> ^layer <lay>)
  3611.     (modify <ff> ^grid-y <gy3> ^can-chng-layer nil ^came-from south)
  3612. )
  3613.  
  3614. (p p35
  3615.     (context ^present propagate-constraint)
  3616.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-top-pins 1 ^no-of-bottom-pins 1)
  3617.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
  3618.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  3619.     { <v> (vertical ^net-name nil ^min < <gy1> ^max <gy1> ^com <gx1> ^layer <lay> ^commo <cmo> ^compo <gx2> ^min-net <garb2>) }
  3620.   - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com <gy1> ^layer <lay>)
  3621.     (congestion ^direction row ^coordinate <gy1> ^como <gy3>)
  3622.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy3> ^max >= <gy3> ^com <gx1> ^layer <lay>)
  3623.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy3> ^layer <lay>)
  3624.   -->
  3625.     (modify <v> ^max <gy3> ^max-net <nn>)
  3626.     (make vertical ^net-name <nn> ^pin-name <pn1> ^min <gy3> ^max <gy1> ^com <gx1> ^compo <gx2> ^commo <cmo> ^layer <lay>)
  3627.     (modify <ff> ^grid-y <gy3> ^can-chng-layer nil ^came-from north)
  3628. )
  3629.  
  3630. (p p36
  3631.     (context ^present propagate-constraint)
  3632.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-right-pins 1 ^no-of-left-pins 1)
  3633.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
  3634.     { <ff> (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  3635.     { <v> (horizontal ^net-name nil ^min <gx2> ^max > <gx2> ^com <gy2> ^layer <lay> ^commo <cmo> ^compo <gy1> ^min-net <garb2>) }
  3636.   - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com <gx2> ^layer <lay>)
  3637.     (congestion ^direction col ^coordinate <gx3> ^como <gx2>)
  3638.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx3> ^max >= <gx3> ^com <gy2> ^layer <lay>)
  3639.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx3> ^layer <lay>)
  3640.   -->
  3641.     (modify <v> ^min <gx3> ^min-net <nn>)
  3642.     (make horizontal ^net-name <nn> ^pin-name <pn2> ^min <gx2> ^max <gx3> ^com <gy2> ^compo <gy1> ^commo <cmo> ^layer <lay>)
  3643.     (modify <ff> ^grid-x <gx3> ^can-chng-layer nil ^came-from west)
  3644. )
  3645.  
  3646. (p p37
  3647.     (context ^present propagate-constraint)
  3648.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-right-pins 1 ^no-of-left-pins 1)
  3649.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
  3650.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  3651.     { <v> (horizontal ^net-name nil ^min < <gx1> ^max <gx1> ^com <gy1> ^layer <lay> ^commo <gy2> ^compo <cpo> ^min-net <garb2>) }
  3652.   - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com <gx1> ^layer <lay>)
  3653.     (congestion ^direction col ^coordinate <gx1> ^como <gx3>)
  3654.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx3> ^max >= <gx3> ^com <gy1> ^layer <lay>)
  3655.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx3> ^layer <lay>)
  3656.   -->
  3657.     (modify <v> ^max <gx3> ^max-net <nn>)
  3658.     (make horizontal ^net-name <nn> ^pin-name <pn1> ^min <gx3> ^max <gx1> ^com <gy1> ^compo <cpo> ^commo <gy2> ^layer <lay>)
  3659.     (modify <ff> ^grid-x <gx3> ^can-chng-layer nil ^came-from east)
  3660. )
  3661.  
  3662. (p p38
  3663.     (context ^present propagate-constraint)
  3664.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-right-pins 1 ^no-of-left-pins 1)
  3665.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
  3666.     { <ff> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  3667.     { <v> (horizontal ^net-name nil ^min < <gx2> ^max <gx2> ^com <gy2> ^layer <lay> ^commo <cmo> ^compo <gx1> ^min-net <garb2>) }
  3668.   - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com <gx2> ^layer <lay>)
  3669.     (congestion ^direction col ^coordinate <gx2> ^como <gx3>)
  3670.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx3> ^max >= <gx3> ^com <gy2> ^layer <lay>)
  3671.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx3> ^layer <lay>)
  3672.   -->
  3673.     (modify <v> ^max <gx3> ^max-net <nn>)
  3674.     (make horizontal ^net-name <nn> ^pin-name <pn2> ^min <gx3> ^max <gx2> ^com <gy2> ^compo <gy1> ^commo <cmo> ^layer <lay>)
  3675.     (modify <ff> ^grid-x <gx3> ^can-chng-layer nil ^came-from east)
  3676. )
  3677.  
  3678. (p p39
  3679.     (context ^present propagate-constraint)
  3680.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-right-pins 1 ^no-of-left-pins 1)
  3681.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
  3682.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  3683.     { <v> (horizontal ^net-name nil ^min <gx1> ^max > <gx1> ^com <gy1> ^layer <lay> ^commo <gy2> ^compo <cpo> ^min-net <garb2>) }
  3684.   - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com <gx1> ^layer <lay>)
  3685.     (congestion ^direction col ^coordinate <gx3> ^como <gx1>)
  3686.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx3> ^max >= <gx3> ^com <gy1> ^layer <lay>)
  3687.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx3> ^layer <lay>)
  3688.   -->
  3689.     (modify <v> ^min <gx3> ^min-net <nn>)
  3690.     (make horizontal ^net-name <nn> ^pin-name <pn1> ^min <gx1> ^max <gx3> ^com <gy1> ^compo <cpo> ^commo <gy2> ^layer <lay>)
  3691.     (modify <ff> ^grid-x <gx3> ^can-chng-layer nil ^came-from west)
  3692. )
  3693.  
  3694. (p p40
  3695.     (context ^present propagate-constraint)
  3696.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3697.     (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3698.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3699.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cpo> ^layer <lay>)
  3700.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cmo> ^layer <lay>)
  3701.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3702.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3703.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  3704.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
  3705.     { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay>) }
  3706.     (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
  3707.     (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
  3708.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cmo> ^layer <lay>)
  3709.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cpo> ^layer <lay>)
  3710.   -->
  3711.     (modify <h1> ^max <hmax2> ^max-net nil)
  3712. )
  3713.  
  3714. (p p41
  3715.     (context ^present propagate-constraint)
  3716.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3717.     (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3718.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
  3719.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cpo> ^layer <lay>)
  3720.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cmo> ^layer <lay>)
  3721.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3722.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3723.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  3724.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
  3725.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay>) }
  3726.     (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
  3727.     (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
  3728.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cmo> ^layer <lay>)
  3729.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cpo> ^layer <lay>)
  3730.   -->
  3731.     (modify <h1> ^min <hmax2> ^min-net nil)
  3732. )
  3733.  
  3734. (p p42
  3735.     (context ^present propagate-constraint)
  3736.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3737.     (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3738.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3739.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cmo> ^layer <lay>)
  3740.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3741.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3742.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  3743.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
  3744.     { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay>) }
  3745.     (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
  3746.     (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
  3747.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cmo> ^layer <lay>)
  3748.     (last-row <gy>)
  3749.   -->
  3750.     (modify <h1> ^max <hmax2> ^max-net nil)
  3751. )
  3752.  
  3753. (p p43
  3754.     (context ^present propagate-constraint)
  3755.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3756.     (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3757.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
  3758.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cmo> ^layer <lay>)
  3759.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3760.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3761.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  3762.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
  3763.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay>) }
  3764.     (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
  3765.     (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
  3766.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cmo> ^layer <lay>)
  3767.     (last-row <gy>)
  3768.   -->
  3769.     (modify <h1> ^min <hmax2> ^min-net nil)
  3770. )
  3771.  
  3772. (p p44
  3773.     (context ^present propagate-constraint)
  3774.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3775.     (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3776.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3777.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cpo> ^layer <lay>)
  3778.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3779.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3780.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  3781.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
  3782.     { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay> ^commo 0) }
  3783.     (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
  3784.     (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
  3785.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cpo> ^layer <lay>)
  3786.   -->
  3787.     (modify <h1> ^max <hmax2> ^max-net nil)
  3788. )
  3789.  
  3790. (p p45
  3791.     (context ^present propagate-constraint)
  3792.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3793.     (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3794.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
  3795.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cpo> ^layer <lay>)
  3796.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3797.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3798.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  3799.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
  3800.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay> ^commo 0) }
  3801.     (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
  3802.     (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
  3803.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cpo> ^layer <lay>)
  3804.   -->
  3805.     (modify <h1> ^min <hmax2> ^min-net nil)
  3806. )
  3807.  
  3808. (p p46
  3809.     (context ^present propagate-constraint)
  3810.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3811.     (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3812.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  3813.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cpo> ^layer <lay>)
  3814.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cmo> ^layer <lay>)
  3815.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  3816.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  3817.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  3818.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
  3819.     { <h1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay>) }
  3820.     (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
  3821.     (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
  3822.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cmo> ^layer <lay>)
  3823.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cpo> ^layer <lay>)
  3824.   -->
  3825.     (modify <h1> ^max <vmax2> ^max-net nil)
  3826. )
  3827.  
  3828. (p p47
  3829.     (context ^present propagate-constraint)
  3830.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3831.     (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3832.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
  3833.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cpo> ^layer <lay>)
  3834.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cmo> ^layer <lay>)
  3835.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  3836.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  3837.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  3838.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
  3839.     { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay>) }
  3840.     (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
  3841.     (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
  3842.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cmo> ^layer <lay>)
  3843.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cpo> ^layer <lay>)
  3844.   -->
  3845.     (modify <v1> ^min <vmax2> ^min-net nil)
  3846. )
  3847.  
  3848. (p p48
  3849.     (context ^present propagate-constraint)
  3850.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3851.     (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3852.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  3853.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cmo> ^layer <lay>)
  3854.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  3855.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  3856.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  3857.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
  3858.     { <v1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay>) }
  3859.     (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
  3860.     (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
  3861.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cmo> ^layer <lay>)
  3862.     (last-col <gx>)
  3863.   -->
  3864.     (modify <v1> ^max <vmax2> ^max-net nil)
  3865. )
  3866.  
  3867. (p p49
  3868.     (context ^present propagate-constraint)
  3869.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3870.     (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3871.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
  3872.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cmo> ^layer <lay>)
  3873.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  3874.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  3875.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  3876.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
  3877.     { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay>) }
  3878.     (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
  3879.     (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
  3880.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cmo> ^layer <lay>)
  3881.     (last-col <gx>)
  3882.   -->
  3883.     (modify <v1> ^min <vmax2> ^min-net nil)
  3884. )
  3885.  
  3886. (p p50
  3887.     (context ^present propagate-constraint)
  3888.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3889.     (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3890.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  3891.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cpo> ^layer <lay>)
  3892.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  3893.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  3894.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  3895.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
  3896.     { <v1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay> ^commo 0) }
  3897.     (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
  3898.     (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
  3899.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cpo> ^layer <lay>)
  3900.   -->
  3901.     (modify <v1> ^max <vmax2> ^max-net nil)
  3902. )
  3903.  
  3904. (p p51
  3905.     (context ^present propagate-constraint)
  3906.     (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
  3907.     (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3908.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
  3909.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cpo> ^layer <lay>)
  3910.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  3911.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  3912.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  3913.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
  3914.     { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay> ^commo 0) }
  3915.     (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
  3916.     (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
  3917.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cpo> ^layer <lay>)
  3918.   -->
  3919.     (modify <v1> ^min <vmax2> ^min-net nil)
  3920. )
  3921.  
  3922. (p p52
  3923.     (context ^present propagate-constraint)
  3924.     (horizontal ^net-name { <nn1> <> nil } ^min <gx> ^max <ppgarb> ^com <gy>)
  3925.     (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3926.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3927.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cpo> ^layer <lay>)
  3928.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cmo> ^layer <lay>)
  3929.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3930.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3931.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  3932.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
  3933.     { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay>) }
  3934.     (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
  3935.     (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
  3936.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cmo> ^layer <lay>)
  3937.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cpo> ^layer <lay>)
  3938.   -->
  3939.     (modify <h1> ^max <hmax2> ^max-net nil)
  3940. )
  3941.  
  3942. (p p53
  3943.     (context ^present propagate-constraint)
  3944.     (horizontal ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gx> ^com <gy>)
  3945.     (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3946.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
  3947.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cpo> ^layer <lay>)
  3948.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cmo> ^layer <lay>)
  3949.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3950.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3951.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  3952.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
  3953.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay>) }
  3954.     (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
  3955.     (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
  3956.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cmo> ^layer <lay>)
  3957.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cpo> ^layer <lay>)
  3958.   -->
  3959.     (modify <h1> ^min <hmax2> ^min-net nil)
  3960. )
  3961.  
  3962. (p p54
  3963.     (context ^present propagate-constraint)
  3964.     (horizontal ^net-name { <nn1> <> nil } ^min <gx> ^max <ppgarb> ^com <gy>)
  3965.     (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3966.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  3967.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cmo> ^layer <lay>)
  3968.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3969.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  3970.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  3971.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
  3972.     { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay>) }
  3973.     (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
  3974.     (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
  3975.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cmo> ^layer <lay>)
  3976.     (last-row <gy>)
  3977.   -->
  3978.     (modify <h1> ^max <hmax2> ^max-net nil)
  3979. )
  3980.  
  3981. (p p55
  3982.     (context ^present propagate-constraint)
  3983.     (horizontal ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gx> ^com <gy>)
  3984.     (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  3985.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
  3986.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cmo> ^layer <lay>)
  3987.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3988.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  3989.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  3990.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
  3991.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay>) }
  3992.     (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
  3993.     (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
  3994.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cmo> ^layer <lay>)
  3995.     (last-row <gy>)
  3996.   -->
  3997.     (modify <h1> ^min <hmax2> ^min-net nil)
  3998. )
  3999.  
  4000. (p p56
  4001.     (context ^present propagate-constraint)
  4002.     (horizontal ^net-name { <nn1> <> nil } ^min <gx> ^max <ppgarb> ^com <gy>)
  4003.     (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  4004.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  4005.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cpo> ^layer <lay>)
  4006.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  4007.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  4008.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  4009.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
  4010.     { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay> ^commo 0) }
  4011.     (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
  4012.     (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
  4013.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cpo> ^layer <lay>)
  4014.   -->
  4015.     (modify <h1> ^max <hmax2> ^max-net nil)
  4016. )
  4017.  
  4018. (p p57
  4019.     (context ^present propagate-constraint)
  4020.     (horizontal ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gx> ^com <gy>)
  4021.     (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  4022.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
  4023.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cpo> ^layer <lay>)
  4024.   - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  4025.   - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  4026.   - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  4027.   - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
  4028.     { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay> ^commo 0) }
  4029.     (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
  4030.     (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
  4031.     (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cpo> ^layer <lay>)
  4032.   -->
  4033.     (modify <h1> ^min <hmax2> ^min-net nil)
  4034. )
  4035.  
  4036. (p p58
  4037.     (context ^present propagate-constraint)
  4038.     (vertical ^net-name { <nn1> <> nil } ^min <gy> ^max <ppgarb> ^com <gx>)
  4039.     (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  4040.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  4041.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cpo> ^layer <lay>)
  4042.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cmo> ^layer <lay>)
  4043.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  4044.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  4045.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  4046.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
  4047.     { <h1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay>) }
  4048.     (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
  4049.     (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
  4050.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cmo> ^layer <lay>)
  4051.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cpo> ^layer <lay>)
  4052.   -->
  4053.     (modify <h1> ^max <vmax2> ^max-net nil)
  4054. )
  4055.  
  4056. (p p59
  4057.     (context ^present propagate-constraint)
  4058.     (vertical ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gy> ^com <gx>)
  4059.     (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  4060.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
  4061.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cpo> ^layer <lay>)
  4062.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cmo> ^layer <lay>)
  4063.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  4064.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  4065.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  4066.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
  4067.     { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay>) }
  4068.     (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
  4069.     (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
  4070.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cmo> ^layer <lay>)
  4071.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cpo> ^layer <lay>)
  4072.   -->
  4073.     (modify <v1> ^min <vmax2> ^min-net nil)
  4074. )
  4075.  
  4076. (p p60
  4077.     (context ^present propagate-constraint)
  4078.     (vertical ^net-name { <nn1> <> nil } ^min <gy> ^max <ppgarb> ^com <gx>)
  4079.     (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  4080.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  4081.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cmo> ^layer <lay>)
  4082.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  4083.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  4084.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  4085.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
  4086.     { <v1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay>) }
  4087.     (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
  4088.     (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
  4089.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cmo> ^layer <lay>)
  4090.     (last-col <gx>)
  4091.   -->
  4092.     (modify <v1> ^max <vmax2> ^max-net nil)
  4093. )
  4094.  
  4095. (p p61
  4096.     (context ^present propagate-constraint)
  4097.     (vertical ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gy> ^com <gx>)
  4098.     (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  4099.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
  4100.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cmo> ^layer <lay>)
  4101.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  4102.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  4103.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  4104.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
  4105.     { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay>) }
  4106.     (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
  4107.     (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
  4108.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cmo> ^layer <lay>)
  4109.     (last-col <gx>)
  4110.   -->
  4111.     (modify <v1> ^min <vmax2> ^min-net nil)
  4112. )
  4113.  
  4114. (p p62
  4115.     (context ^present propagate-constraint)
  4116.     (vertical ^net-name { <nn1> <> nil } ^min <gy> ^max <ppgarb> ^com <gx>)
  4117.     (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  4118.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  4119.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cpo> ^layer <lay>)
  4120.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  4121.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  4122.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  4123.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
  4124.     { <v1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay> ^commo 0) }
  4125.     (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
  4126.     (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
  4127.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cpo> ^layer <lay>)
  4128.   -->
  4129.     (modify <v1> ^max <vmax2> ^max-net nil)
  4130. )
  4131.  
  4132. (p p63
  4133.     (context ^present propagate-constraint)
  4134.     (vertical ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gy> ^com <gx>)
  4135.     (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  4136.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
  4137.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cpo> ^layer <lay>)
  4138.   - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  4139.   - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  4140.   - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  4141.   - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
  4142.     { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay> ^commo 0) }
  4143.     (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
  4144.     (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
  4145.     (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cpo> ^layer <lay>)
  4146.   -->
  4147.     (modify <v1> ^min <vmax2> ^min-net nil)
  4148. )
  4149.  
  4150. (p p64
  4151.     (context ^present propagate-constraint)
  4152.     { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4153.     { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max { <hmax> > <vcom> } ^com <vmax> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4154.     (vertical ^net-name { <nn1> <> nil } ^min < <vmax> ^max >= <vmax> ^com <vcmo> ^layer <lay> ^compo <vcom> ^commo <garb1>)
  4155.     (vertical ^net-name { <nn2> <> <nn1> <> nil } ^min < <vmax> ^max >= <vmax> ^com <vcpo> ^layer <lay> ^compo <garb2> ^commo <vcom>)
  4156.     (horizontal ^net-name nil ^min < <vcom> ^max > <vcom> ^com <hcmo> ^layer <lay>)
  4157.   - (vertical ^status nil ^min <vmax> ^max > <vmax> ^com <vcom>)
  4158.   - (horizontal ^status nil ^min { <temp> <= <vcom> } ^max { > <temp> >= <vcom> } ^com <vmax> ^layer <> <lay>)
  4159.   -->
  4160.     (modify <v> ^max <hcmo> ^max-net nil)
  4161.     (make (substr <h> 1 inf) ^max <vcmo> ^max-net <nn1>)
  4162.     (modify <h> ^min <vcpo> ^min-net <nn2>)
  4163. )
  4164.  
  4165. (p p65
  4166.     (context ^present propagate-constraint)
  4167.     { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4168.     { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max { <hmax> > <vcom> } ^com <vmin> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4169.     (vertical ^net-name { <nn1> <> nil } ^min <= <vmin> ^max > <vmin> ^com <vcmo> ^layer <lay> ^compo <vcom> ^commo <garb1>)
  4170.     (vertical ^net-name { <nn2> <> <nn1> <> nil } ^min <= <vmin> ^max > <vmin> ^com <vcpo> ^layer <lay> ^compo <garb2> ^commo <vcom>)
  4171.     (horizontal ^net-name nil ^min < <vcom> ^max > <vcom> ^com <hcpo> ^layer <lay>)
  4172.   - (vertical ^status nil ^min < <vmin> ^max <vmin> ^com <vcom>)
  4173.   - (horizontal ^status nil ^min { <temp> <= <vcom> } ^max { > <temp> >= <vcom> } ^com <vmin> ^layer <> <lay>)
  4174.   -->
  4175.     (modify <v> ^min <hcpo> ^min-net nil)
  4176.     (make (substr <h> 1 inf) ^max <vcmo> ^max-net <nn1>)
  4177.     (modify <h> ^min <vcpo> ^min-net <nn2>)
  4178. )
  4179.  
  4180. (p p66
  4181.     (context ^present propagate-constraint)
  4182.     { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4183.     { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max { <vmax> > <hcom> } ^com <hmax> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4184.     (horizontal ^net-name { <nn1> <> nil } ^min < <hmax> ^max >= <hmax> ^com <hcmo> ^layer <lay> ^compo <hcom> ^commo <garb1>)
  4185.     (horizontal ^net-name { <nn2> <> <nn1> <> nil } ^min < <hmax> ^max >= <hmax> ^com <hcpo> ^layer <lay> ^compo <garb2> ^commo <hcom>)
  4186.     (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com <vcmo> ^layer <lay>)
  4187.   - (horizontal ^status nil ^min <hmax> ^max > <hmax> ^com <hcom>)
  4188.   - (vertical ^status nil ^min { <temp> <= <hcom> } ^max { > <temp> >= <hcom> } ^com <hmax> ^layer <> <lay>)
  4189.   -->
  4190.     (modify <h> ^max <vcmo> ^max-net nil)
  4191.     (make (substr <v> 1 inf) ^max <hcmo> ^max-net <nn1>)
  4192.     (modify <v> ^min <hcpo> ^min-net <nn2>)
  4193. )
  4194.  
  4195. (p p67
  4196.     (context ^present propagate-constraint)
  4197.     { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4198.     { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max { <vmax> > <hcom> } ^com <hmin> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4199.     (horizontal ^net-name { <nn1> <> nil } ^min <= <hmin> ^max > <hmin> ^com <hcmo> ^layer <lay> ^compo <hcom> ^commo <garb1>)
  4200.     (horizontal ^net-name { <nn2> <> <nn1> <> nil } ^min <= <hmin> ^max > <hmin> ^com <hcpo> ^layer <lay> ^compo <garb2> ^commo <hcom>)
  4201.     (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com <vcpo> ^layer <lay>)
  4202.   - (horizontal ^status nil ^min < <hmin> ^max <hmin> ^com <hcom>)
  4203.   - (vertical ^status nil ^min { <temp> <= <hcom> } ^max { > <temp> >= <hcom> } ^com <hmin> ^layer <> <lay>)
  4204.   -->
  4205.     (modify <h> ^min <vcpo> ^min-net nil)
  4206.     (make (substr <v> 1 inf) ^max <hcmo> ^max-net <nn1>)
  4207.     (modify <v> ^min <hcpo> ^min-net <nn2>)
  4208. )
  4209.  
  4210. (p p68
  4211.     (context ^present propagate-constraint)
  4212.     { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4213.     { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max <vcom> ^com <vmax> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4214.     (vertical ^net-name { <nn1> <> nil } ^min < <vmax> ^max >= <vmax> ^com <vcmo> ^layer <lay> ^compo <vcom> ^commo <garb1>)
  4215.     (horizontal ^net-name nil ^min < <vcom> ^max >= <vcom> ^com <hcmo> ^layer <lay>)
  4216.   - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <> <lay>)
  4217.   - (horizontal ^net-name nil ^min <vcom> ^max > <vcom> ^com <vmax> ^layer <> <lay>)
  4218.   -->
  4219.     (modify <h> ^max <vcmo> ^max-net <nn1>)
  4220. )
  4221.  
  4222. (p p69
  4223.     (context ^present propagate-constraint)
  4224.     { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4225.     { <h> (horizontal ^net-name nil ^min <vcom> ^max { <hmax> > <vcom> } ^com <vmax> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4226.     (vertical ^net-name { <nn1> <> nil } ^min < <vmax> ^max >= <vmax> ^com <vcpo> ^layer <lay> ^compo <garb1> ^commo <vcom>)
  4227.     (horizontal ^net-name nil ^min <= <vcom> ^max > <vcom> ^com <hcmo> ^layer <lay>)
  4228.   - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <> <lay>)
  4229.   - (horizontal ^net-name nil ^min < <vcom> ^max <vcom> ^com <vmax> ^layer <> <lay>)
  4230.   -->
  4231.     (modify <h> ^min <vcpo> ^min-net <nn1>)
  4232. )
  4233.  
  4234. (p p70
  4235.     (context ^present propagate-constraint)
  4236.     { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4237.     { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max <vcom> ^com <vmin> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4238.     (vertical ^net-name { <nn1> <> nil } ^min <= <vmin> ^max > <vmin> ^com <vcmo> ^layer <lay> ^compo <vcom> ^commo <garb1>)
  4239.     (horizontal ^net-name nil ^min < <vcom> ^max >= <vcom> ^com <hcpo> ^layer <lay>)
  4240.   - (vertical ^net-name nil ^min < <vmin> ^max <vmin> ^com <vcom> ^layer <> <lay>)
  4241.   - (horizontal ^net-name nil ^min <vcom> ^max > <vcom> ^com <vmin> ^layer <> <lay>)
  4242.   -->
  4243.     (modify <h> ^max <vcmo> ^max-net <nn1>)
  4244. )
  4245.  
  4246. (p p71
  4247.     (context ^present propagate-constraint)
  4248.     { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4249.     { <h> (horizontal ^net-name nil ^min <vcom> ^max { <hmax> > <vcom> } ^com <vmin> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4250.     (vertical ^net-name { <nn1> <> nil } ^min <= <vmin> ^max > <vmin> ^com <vcpo> ^layer <lay> ^compo <garb1> ^commo <vcom>)
  4251.     (horizontal ^net-name nil ^min <= <vcom> ^max > <vcom> ^com <hcpo> ^layer <lay>)
  4252.   - (vertical ^net-name nil ^min < <vmin> ^max <vmin> ^com <vcom> ^layer <> <lay>)
  4253.   - (horizontal ^net-name nil ^min < <vcom> ^max <vcom> ^com <vmin> ^layer <> <lay>)
  4254.   -->
  4255.     (modify <h> ^min <vcpo> ^min-net <nn1>)
  4256. )
  4257.  
  4258. (p p72
  4259.     (context ^present propagate-constraint)
  4260.     { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4261.     { <v> (vertical ^net-name nil ^min <hcom> ^max { <vmax> > <hcom> } ^com <hmax> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4262.     (horizontal ^net-name { <nn1> <> nil } ^min < <hmax> ^max >= <hmax> ^com <hcpo> ^layer <lay> ^compo <garb1> ^commo <hcom>)
  4263.     (vertical ^net-name nil ^min <= <hcom> ^max > <hcom> ^com <vcmo> ^layer <lay>)
  4264.   - (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <> <lay>)
  4265.   - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com <hmax> ^layer <> <lay>)
  4266.   -->
  4267.     (modify <v> ^min <hcpo> ^min-net <nn1>)
  4268. )
  4269.  
  4270. (p p73
  4271.     (context ^present propagate-constraint)
  4272.     { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4273.     { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max <hcom> ^com <hmax> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4274.     (horizontal ^net-name { <nn1> <> nil } ^min < <hmax> ^max >= <hmax> ^com <hcmo> ^layer <lay> ^compo <hcom> ^commo <garb1>)
  4275.     (vertical ^net-name nil ^min < <hcom> ^max >= <hcom> ^com <vcmo> ^layer <lay>)
  4276.   - (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <> <lay>)
  4277.   - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com <hmax> ^layer <> <lay>)
  4278.   -->
  4279.     (modify <v> ^max <hcmo> ^max-net <nn1>)
  4280. )
  4281.  
  4282. (p p74
  4283.     (context ^present propagate-constraint)
  4284.     { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4285.     { <v> (vertical ^net-name nil ^min <hcom> ^max { <vmax> > <hcom> } ^com <hmin> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4286.     (horizontal ^net-name { <nn1> <> nil } ^min <= <hmin> ^max > <hmin> ^com <hcpo> ^layer <lay> ^compo <garb1> ^commo <hcom>)
  4287.     (vertical ^net-name nil ^min <= <hcom> ^max > <hcom> ^com <vcpo> ^layer <lay>)
  4288.   - (horizontal ^net-name nil ^min < <hmin> ^max <hmin> ^com <hcom> ^layer <> <lay>)
  4289.   - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com <hmin> ^layer <> <lay>)
  4290.   -->
  4291.     (modify <v> ^min <hcpo> ^min-net <nn1>)
  4292. )
  4293.  
  4294. (p p75
  4295.     (context ^present propagate-constraint)
  4296.     { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  4297.     { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max <hcom> ^com <hmin> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
  4298.     (horizontal ^net-name { <nn1> <> nil } ^min <= <hmin> ^max > <hmin> ^com <hcmo> ^layer <lay> ^compo <hcom> ^commo <garb1>)
  4299.     (vertical ^net-name nil ^min < <hcom> ^max >= <hcom> ^com <vcpo> ^layer <lay>)
  4300.   - (horizontal ^net-name nil ^min < <hmin> ^max <hmin> ^com <hcom> ^layer <> <lay>)
  4301.   - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com <hmin> ^layer <> <lay>)
  4302.   -->
  4303.     (modify <v> ^max <hcmo> ^max-net <nn1>)
  4304. )
  4305.  
  4306. (p p76
  4307.     (context ^present propagate-constraint)
  4308.     (vertical ^net-name { <nn1> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay>)
  4309.     (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <vlay>)
  4310.     (horizontal ^net-name { <nn2> <> <nn1> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer { <hlay> <> <vlay> } ^compo <hcpo> ^commo <vmax>)
  4311.   - (horizontal ^status nil ^min <= <vcom> ^max >= <vcom> ^com <vmax>)
  4312.     { <v> (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <hlay>) }
  4313.   -->
  4314.     (modify <v> ^min <hcom> ^min-net <nn2>)
  4315. )
  4316.  
  4317. (p p77
  4318.     (context ^present propagate-constraint)
  4319.     (vertical ^net-name { <nn1> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay>)
  4320.     (vertical ^net-name nil ^min <garb1> ^max { <vmin> > <garb1> } ^com <vcom> ^layer <vlay>)
  4321.     (horizontal ^net-name { <nn2> <> <nn1> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer { <hlay> <> <vlay> } ^compo <vmin> ^commo <hcmo>)
  4322.   - (horizontal ^status nil ^min <= <vcom> ^max >= <vcom> ^com <vmin>)
  4323.     { <v> (vertical ^net-name nil ^min <garb2> ^max { <vmin> > <garb2> } ^com <vcom> ^layer <hlay>) }
  4324.   -->
  4325.     (modify <v> ^max <hcom> ^max-net <nn2>)
  4326. )
  4327.  
  4328. (p p78
  4329.     (context ^present propagate-constraint)
  4330.     (horizontal ^net-name { <nn1> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay>)
  4331.     (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <hlay>)
  4332.     (vertical ^net-name { <nn2> <> <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer { <vlay> <> <hlay> } ^compo <vcpo> ^commo <hmax>)
  4333.   - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmax>)
  4334.     { <h> (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <vlay>) }
  4335.   -->
  4336.     (modify <h> ^min <vcom> ^min-net <nn2>)
  4337. )
  4338.  
  4339. (p p79
  4340.     (context ^present propagate-constraint)
  4341.     (horizontal ^net-name { <nn1> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay>)
  4342.     (horizontal ^net-name nil ^min <garb1> ^max { <hmin> > <garb1> } ^com <hcom> ^layer <hlay>)
  4343.     (vertical ^net-name { <nn2> <> <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer { <vlay> <> <hlay> } ^compo <hmin> ^commo <vcmo>)
  4344.   - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmin>)
  4345.     { <h> (horizontal ^net-name nil ^min <garb2> ^max { <hmin> > <garb2> } ^com <hcom> ^layer <vlay>) }
  4346.   -->
  4347.     (modify <h> ^max <vcom> ^max-net <nn2>)
  4348. )
  4349.  
  4350. (p p80
  4351.     (context ^present propagate-constraint)
  4352.     (last-col <lc>)
  4353.     (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> <= 1 } ^max <vmax> ^com <vcom> ^layer <vlay> ^pin-name <pn> ^commo <vcmo>)
  4354.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom> ^max { <hmax> >= <lc> } ^com <vmax> ^layer <hlay>)
  4355.     { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max <vcom> ^com { <hcom> >= <vmin> <= <vmax> } ^layer <lay>) }
  4356.   - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com { > <hcom> <= <vmax> })
  4357.   - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com { < <hcom> >= <vmin> })
  4358.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com { > <hcom> <= <vmax> })
  4359.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com { < <hcom> >= <vmin> })
  4360.   - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com <hcom> ^layer <> <lay>)
  4361.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <> <lay>)
  4362.   - (vertical ^net-name <nn> ^min <= <vmax> ^max >= <vmax> ^com { > <vcom> <= <hmax> })
  4363.   - (vertical ^net-name nil ^min <= <vmax> ^max >= <vmax> ^com { > <vcom> <= <hmax> })
  4364.   - (vertical ^net-name nil ^min <= <vmax> ^max >= <vmax> ^com <vcom>)
  4365.   - (vertical ^net-name <nn> ^min <vmax> ^max > <vmax> ^com <vcom>)
  4366.   - (vertical ^net-name nil ^min <= <vmin> ^max >= <vmin> ^com <vcom>)
  4367.   - (vertical ^net-name <nn> ^min < <vmin> ^max <vmin> ^com <vcom>)
  4368.   -->
  4369.     (make (substr <h> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <vcmo>)
  4370.     (modify <h> ^max <vcmo> ^max-net <nn>)
  4371.     (make ff ^grid-x <vcmo> ^grid-y <hcom> ^grid-layer <lay> ^net-name <nn> ^pin-name <pn> ^came-from east)
  4372. )
  4373.  
  4374. (p p81
  4375.     (context ^present propagate-constraint)
  4376.     (last-row <lr>)
  4377.     (last-col <lc>)
  4378.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max { <vmax> >= <lr> } ^com <vcom> ^layer <vlay> ^pin-name <pn> ^commo <vcmo>)
  4379.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom> ^max { <hmax> >= <lc> } ^com <vmin> ^layer <hlay>)
  4380.     { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max <vcom> ^com { <hcom> >= <vmin> <= <vmax> } ^layer <lay>) }
  4381.   - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com { > <hcom> <= <vmax> })
  4382.   - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com { < <hcom> >= <vmin> })
  4383.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com { > <hcom> <= <vmax> })
  4384.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com { < <hcom> >= <vmin> })
  4385.   - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com <hcom> ^layer <> <lay>)
  4386.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <> <lay>)
  4387.   - (vertical ^net-name <nn> ^min <= <vmin> ^max >= <vmin> ^com { > <vcom> <= <hmax> })
  4388.   - (vertical ^net-name nil ^min <= <vmin> ^max >= <vmin> ^com { > <vcom> <= <hmax> })
  4389.   - (vertical ^net-name nil ^min <= <vmin> ^max >= <vmin> ^com <vcom>)
  4390.   - (vertical ^net-name <nn> ^min < <vmin> ^max <vmin> ^com <vcom>)
  4391.   - (vertical ^net-name nil ^min <= <vmax> ^max >= <vmax> ^com <vcom>)
  4392.   - (vertical ^net-name <nn> ^min <vmax> ^max > <vmax> ^com <vcom>)
  4393.   -->
  4394.     (make (substr <h> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <vcmo>)
  4395.     (modify <h> ^max <vcmo> ^max-net <nn>)
  4396.     (make ff ^grid-x <vcmo> ^grid-y <hcom> ^grid-layer <lay> ^net-name <nn> ^pin-name <pn> ^came-from east)
  4397. )
  4398.  
  4399. (p p82
  4400.     (context ^present propagate-constraint)
  4401.     (horizontal ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^pin-name <pn> ^commo <hcmo>)
  4402.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <hcom> ^max <vmax1> ^com <hmin> ^layer <vlay1>)
  4403.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <hcom> ^max <vmax2> ^com <hmax> ^layer <vlay2>)
  4404.     { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max <hcom> ^com { <vcom> >= <hmin> <= <hmax> } ^layer <lay>) }
  4405.   - (vertical ^net-name <nn> ^min < <hcom> ^max >= <hcom> ^com { > <vcom> <= <hmax> })
  4406.   - (vertical ^net-name <nn> ^min < <hcom> ^max >= <hcom> ^com { < <vcom> >= <hmin> })
  4407.   - (vertical ^net-name nil ^min <= <hcom> ^max >= <hcom> ^com { > <vcom> <= <hmax> })
  4408.   - (vertical ^net-name nil ^min <= <hcom> ^max >= <hcom> ^com { < <vcom> >= <hmin> })
  4409.   - (vertical ^net-name <nn> ^min < <hcom> ^max >= <hcom> ^com <vcom> ^layer <> <lay>)
  4410.   - (vertical ^net-name nil ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <> <lay>)
  4411.   - (horizontal ^net-name <nn> ^min <= <hmax> ^max >= <hmax> ^com { > <hcom> <= <vmax2> })
  4412.   - (horizontal ^net-name <nn> ^min <= <hmin> ^max >= <hmin> ^com { > <hcom> <= <vmax1> })
  4413.   - (horizontal ^net-name nil ^min <= <hmax> ^max >= <hmax> ^com { > <hcom> <= <vmax2> })
  4414.   - (horizontal ^net-name nil ^min <= <hmin> ^max >= <hmin> ^com { > <hcom> <= <vmax1> })
  4415.   - (horizontal ^net-name nil ^min <= <hmax> ^max >= <hmax> ^com <hcom>)
  4416.   - (horizontal ^net-name <nn> ^min <hmax> ^max > <hmax> ^com <hcom>)
  4417.   - (horizontal ^net-name nil ^min <= <hmin> ^max >= <hmin> ^com <hcom>)
  4418.   - (horizontal ^net-name <nn> ^min < <hmin> ^max <hmin> ^com <hcom>)
  4419.   -->
  4420.     (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <hcmo>)
  4421.     (modify <v> ^max <hcmo> ^max-net <nn>)
  4422.     (make ff ^grid-x <vcom> ^grid-y <hcmo> ^grid-layer <lay> ^net-name <nn> ^pin-name <pn> ^came-from north)
  4423. )
  4424.  
  4425. (p p377
  4426.     (context ^present find-no-of-pins-on-a-row-col)
  4427.     (horizontal ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gy> ^layer <lay> ^compo <egarb1> ^commo <egabr2>)
  4428.     (ff ^net-name <nn> ^grid-x { <fx> >= <min> <= <max> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn1>)
  4429.     (ff ^net-name <nn> ^grid-y <gy> ^pin-name { <pn2> <> <pn1> } ^grid-x { <gx> > <fx> <= <max> })
  4430.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <fx> ^max >= <gx> ^com <gy>)
  4431.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { >= <fx> <= <gx> } ^layer <lay>)
  4432.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <fx> ^max >= <fx> ^com <gy> ^layer <lay>)
  4433.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  4434.     (net ^net-name <nn> ^net-no-of-pins <np>)
  4435.   - (total ^net-name <nn> ^row-col row ^coor <gy>)
  4436.   -->
  4437.     (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins 1 ^total-pins <np> ^min-xy <fx> ^max-xy <gx> ^last-pin <pn1> ^last-xy <fx>)
  4438. )
  4439.  
  4440. (p p378
  4441.     (context ^present find-no-of-pins-on-a-row-col)
  4442.     (horizontal ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gy> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  4443.     (ff ^net-name <nn> ^grid-x { <fx> >= <min> <= <max> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn1>)
  4444.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx> > <fx> <= <max> } ^pin-name { <pn2> <> <pn1> })
  4445.   - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <> <pn1>)
  4446.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <fx> ^max >= <gx> ^com <gy>)
  4447.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { >= <fx> <= <gx> } ^layer <lay>)
  4448.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <fx> ^max >= <fx> ^com <gy> ^layer <lay>)
  4449.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  4450.     (net ^net-name <nn> ^net-no-of-pins <np>)
  4451.   - (total ^net-name <nn> ^row-col row ^coor <gy>)
  4452.   -->
  4453.     (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins 1 ^total-pins <np> ^min-xy <fx> ^max-xy <gx> ^last-pin <pn1> ^last-xy <fx>)
  4454. )
  4455.  
  4456. (p p379
  4457.     (context ^present find-no-of-pins-on-a-row-col)
  4458.     (horizontal ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gy> ^layer <lay>)
  4459.     (ff ^net-name <nn> ^grid-x { <fx> >= <min> <= <max> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn1>)
  4460.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx> < <fx> >= <min> } ^pin-name { <pn2> <> <pn1> })
  4461.   - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <> <pn1>)
  4462.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <fx> ^com <gy>)
  4463.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <= <fx> >= <gx> } ^layer <lay>)
  4464.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <fx> ^max >= <fx> ^com <gy> ^layer <lay>)
  4465.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  4466.     (net ^net-name <nn> ^net-no-of-pins <np>)
  4467.   - (total ^net-name <nn> ^row-col row ^coor <gy>)
  4468.   -->
  4469.     (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins 1 ^total-pins <np> ^min-xy <gx> ^max-xy <fx> ^last-pin <pn2> ^last-xy <gx>)
  4470. )
  4471.  
  4472. (p p380
  4473.     (context ^present find-no-of-pins-on-a-row-col)
  4474.     (vertical ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gx> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  4475.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <fy> >= <min> <= <max> } ^grid-layer <garb1> ^pin-name <pn1>)
  4476.     (ff ^net-name <nn> ^grid-x <gx> ^pin-name { <pn2> <> <pn1> } ^grid-y { <gy> > <fy> <= <max> })
  4477.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <fy> ^max >= <gy> ^com <gx>)
  4478.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <fy> <= <gy> } ^layer <lay>)
  4479.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <fy> ^max >= <fy> ^com <gx> ^layer <lay>)
  4480.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  4481.     (net ^net-name <nn> ^net-no-of-pins <np>)
  4482.   - (total ^net-name <nn> ^row-col col ^coor <gx>)
  4483.   -->
  4484.     (make total ^net-name <nn> ^row-col col ^coor <gx> ^level-pins 1 ^total-pins <np> ^min-xy <fy> ^max-xy <gy> ^last-pin <pn1> ^last-xy <fy>)
  4485. )
  4486.  
  4487. (p p381
  4488.     (context ^present find-no-of-pins-on-a-row-col)
  4489.     (vertical ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gx> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  4490.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <fy> >= <min> <= <max> } ^grid-layer <garb1> ^pin-name <pn1>)
  4491.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy> > <fy> <= <max> } ^pin-name { <pn2> <> <pn1> })
  4492.   - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <> <pn1>)
  4493.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <fy> ^max >= <gy> ^com <gx>)
  4494.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <fy> <= <gy> } ^layer <lay>)
  4495.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <fy> ^max >= <fy> ^com <gx> ^layer <lay>)
  4496.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  4497.     (net ^net-name <nn> ^net-no-of-pins <np>)
  4498.   - (total ^net-name <nn> ^row-col col ^coor <gx>)
  4499.   -->
  4500.     (make total ^net-name <nn> ^row-col col ^coor <gx> ^level-pins 1 ^total-pins <np> ^min-xy <fy> ^max-xy <gy> ^last-pin <pn1> ^last-xy <fy>)
  4501. )
  4502.  
  4503. (p p382
  4504.     (context ^present find-no-of-pins-on-a-row-col)
  4505.     (vertical ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gx> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
  4506.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <fy> >= <min> <= <max> } ^grid-layer <garb1> ^pin-name <pn1>)
  4507.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy> < <fy> >= <min> } ^pin-name { <pn2> <> <pn1> })
  4508.   - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <> <pn1>)
  4509.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <fy> ^com <gx>)
  4510.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <gy> <= <fy> } ^layer <lay>)
  4511.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <fy> ^max >= <fy> ^com <gx> ^layer <lay>)
  4512.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  4513.     (net ^net-name <nn> ^net-no-of-pins <np>)
  4514.   - (total ^net-name <nn> ^row-col col ^coor <gx>)
  4515.   -->
  4516.     (make total ^net-name <nn> ^row-col col ^coor <gx> ^level-pins 1 ^total-pins <np> ^min-xy <gy> ^max-xy <fy> ^last-pin <pn2> ^last-xy <gy>)
  4517. )
  4518.  
  4519. (p p383
  4520.     (context ^present find-no-of-pins-on-a-row-col)
  4521.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <gy> ^grid-layer <garb2> ^pin-name <pn>)
  4522.     (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <np> ^no-of-bottom-pins <garb3>)
  4523.   - (ff ^net-name <nn> ^grid-y <= <gy> ^pin-name <> <pn>)
  4524.   - (total ^net-name <nn>)
  4525.   -->
  4526.     (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins <np> ^total-pins <np>)
  4527. )
  4528.  
  4529. (p p384
  4530.     (context ^present find-no-of-pins-on-a-row-col)
  4531.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <gy> ^grid-layer <garb2> ^pin-name <pn>)
  4532.     (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <garb3> ^no-of-bottom-pins <np>)
  4533.   - (ff ^net-name <nn> ^grid-y >= <gy> ^pin-name <> <pn>)
  4534.   - (total ^net-name <nn>)
  4535.   -->
  4536.     (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins <np> ^total-pins <np>)
  4537. )
  4538.  
  4539. (p p385
  4540.     (context ^present find-no-of-pins-on-a-row-col)
  4541.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
  4542.     (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <np> ^no-of-bottom-pins <garb2>)
  4543.   - (total ^net-name <nn>)
  4544.     (ff ^net-name <nn> ^grid-y <gy> ^pin-name <> <pn> ^grid-x { <fx> > <gx> })
  4545.   - (ff ^net-name <nn> ^grid-y < <gy>)
  4546.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <fx> ^com <gy>)
  4547.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <fx> ^com <gy>)
  4548.     { <v1> (vertical ^net-name nil ^min { <min> < <gy> } ^max >= <gy> ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <mn>) }
  4549.   - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
  4550.     (congestion ^direction row ^coordinate <gy> ^como <hcmo>)
  4551.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  4552.   -->
  4553.     (make vertical ^net-name nil ^max <hcmo> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
  4554.     (modify <v1> ^min <gy> ^min-net <nn>)
  4555.     (make vertical ^net-name <nn> ^max <gy> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  4556.     (modify <ff1> ^grid-y <hcmo> ^can-chng-layer nil)
  4557.     (make total ^net-name <nn> ^row-col row ^coor <hcmo> ^level-pins <np> ^total-pins <np>)
  4558. )
  4559.  
  4560. (p p386
  4561.     (context ^present find-no-of-pins-on-a-row-col)
  4562.     { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
  4563.     (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <garb2> ^no-of-bottom-pins <np>)
  4564.   - (total ^net-name <nn>)
  4565.     (ff ^net-name <nn> ^grid-y <gy> ^pin-name <> <pn> ^grid-x { <fx> > <gx> })
  4566.   - (ff ^net-name <nn> ^grid-y > <gy>)
  4567.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <fx> ^com <gy>)
  4568.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <fx> ^com <gy>)
  4569.     { <v1> (vertical ^net-name nil ^min <= <gy> ^max { <max> > <gy> } ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <mn>) }
  4570.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
  4571.     (congestion ^direction row ^coordinate <hcmo> ^como <gy>)
  4572.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  4573.   -->
  4574.     (make vertical ^net-name nil ^max <max> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <nn> ^max-net <mn>)
  4575.     (modify <v1> ^max <gy> ^max-net <nn>)
  4576.     (make vertical ^net-name <nn> ^min <gy> ^max <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  4577.     (modify <ff1> ^grid-y <hcmo> ^can-chng-layer nil)
  4578.     (make total ^net-name <nn> ^row-col row ^coor <hcmo> ^level-pins <np> ^total-pins <np>)
  4579. )
  4580.  
  4581. (p p387
  4582.     { <t1> (total ^net-name <nn> ^row-col row ^coor <y> ^level-pins <np> ^total-pins <np> ^min-xy nil ^max-xy nil) }
  4583.     (pin ^net-name <nn> ^pin-x <px1>)
  4584.   - (pin ^net-name <nn> ^pin-x < <px1>)
  4585.     (pin ^net-name <nn> ^pin-x { <px2> > <px1> })
  4586.   - (pin ^net-name <nn> ^pin-x > <px2>)
  4587.   -->
  4588.     (modify <t1> ^min-xy <px1> ^max-xy <px2>)
  4589. )
  4590.  
  4591. (p p388
  4592.     (context ^present find-no-of-pins-on-a-row-col)
  4593.   -->
  4594.     (make context ^previous find-no-of-pins-on-a-row-col)
  4595.     (remove 1)
  4596. )
  4597.  
  4598. (p p389
  4599.     (context ^previous find-no-of-pins-on-a-row-col)
  4600.     (total)
  4601.   -->
  4602.     (remove 1)
  4603.     (make context ^present modify-total)
  4604. )
  4605.  
  4606. (p p390
  4607.     (context ^present delete-totals)
  4608.   -->
  4609.     (modify 1 ^present choose-between-nets-on-the-same-row-col)
  4610. )
  4611.  
  4612. (p p391
  4613.     { <c1> (context ^present << choose-between-nets-on-the-same-row-col choose-between-nets-on-the-same-row-col-con >>) }
  4614.     { <t1> (total ^net-name <nn> ^row-col { << row col >> <rc> } ^coor <xy> ^level-pins <cou> ^total-pins <garb1>) }
  4615.   - (total ^net-name <> <nn> ^level-pins >= <cou>)
  4616.   - (total ^net-name <nn> ^row-col <> <rc> ^level-pins >= <cou>)
  4617.   -->
  4618.     (remove <c1> <t1>)
  4619.     (make change-priority)
  4620.     (make tran-total <rc> <xy> (substr <t1> nets inf))
  4621. )
  4622.  
  4623. (p p392
  4624.     (context ^present choose-between-nets-on-the-same-row-col)
  4625.     (total ^net-name <garb1> ^row-col { << row col >> <garb2> } ^coor <garb3> ^level-pins <cou> ^total-pins <cou>)
  4626.     { <t1> (total ^level-pins < <cou>) }
  4627.   -->
  4628.     (remove <t1>)
  4629. )
  4630.  
  4631. (p p393
  4632.     (context ^present choose-between-nets-on-the-same-row-col)
  4633.     (total ^net-name <garb1> ^row-col { << row col >> <garb2> } ^coor <garb3> ^level-pins <cou> ^total-pins <garb4>)
  4634.     { <t1> (total ^level-pins <cou1> ^total-pins { < <cou> <> <cou1> }) }
  4635.   -->
  4636.     (remove <t1>)
  4637. )
  4638.  
  4639. (p p394
  4640.     (context ^present choose-between-nets-on-the-same-row-col)
  4641.     (total ^net-name <nn> ^row-col { << row col >> <rc> } ^coor <garb1> ^level-pins <cou>)
  4642.     { <t1> (total ^net-name <nn> ^row-col <> <rc> ^level-pins <cou>) }
  4643.   -->
  4644.     (remove <t1>)
  4645. )
  4646.  
  4647. (p p395
  4648.     (context ^present choose-between-nets-on-the-same-row-col)
  4649.     (total ^net-name <nn> ^row-col { << row col >> <rc> } ^coor <xy> ^level-pins <cou> ^total-pins <garb1>)
  4650.     { <t1> (total ^net-name <nn> ^row-col <rc> ^coor <> <xy> ^level-pins <cou>) }
  4651.   -->
  4652.     (remove <t1>)
  4653. )
  4654.  
  4655. (p p396
  4656.     { <c1> (context ^present << choose-between-nets-on-the-same-row-col choose-between-nets-on-the-same-row-col-con >>) }
  4657.     { <t1> (total ^net-name <nn> ^row-col { << row col >> <rc> } ^coor <xy> ^level-pins <cou> ^total-pins <cou>) }
  4658.   - (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou>)
  4659.   -->
  4660.     (remove <c1> <t1>)
  4661.     (make change-priority)
  4662.     (make tran-total <rc> <xy> (substr <t1> nets inf))
  4663. )
  4664.  
  4665. (p p397
  4666.     { <t1> (tran-total <rc> <xy> { <nn> <> nil <> end } <min> <max>) }
  4667.   -->
  4668.     (write (crlf) |***** next net to be routed is| <nn> *****)
  4669.     (make next-segment <nn> <rc> <xy> useless <min> <max>)
  4670.     (remove <t1>)
  4671.     (make tran-total <rc> <xy> (substr <t1> 7 inf))
  4672. )
  4673.  
  4674. (p p398
  4675.     { <t1> (tran-total <rc> <xy> nil) }
  4676.   -->
  4677.     (make dominant-layer)
  4678.     (remove <t1>)
  4679.     (make goal cleanup total-verti)
  4680.     (make goal cleanup counted-verti)
  4681.     (make goal cleanup total)
  4682.     (make goal cleanup extend-ff-tried)
  4683. )
  4684.  
  4685. (p p399
  4686.     (context ^present choose-between-nets-on-the-same-row-col)
  4687.     (total ^net-name <nn> ^row-col { << row col >> <garb1> } ^coor <garb2> ^level-pins <cou> ^total-pins <cou>)
  4688.     { <t1> (total ^net-name <> <nn> ^level-pins <cou> ^total-pins > <cou>) }
  4689.   -->
  4690.     (remove <t1>)
  4691. )
  4692.  
  4693. (p p400
  4694.     (context ^present choose-between-nets-on-the-same-row-col)
  4695.     (total ^net-name <nn> ^row-col { << row col >> <garb1> } ^coor <garb2> ^level-pins <cou> ^total-pins <cou1>)
  4696.     { <t1> (total ^net-name <> <nn> ^level-pins <cou> ^total-pins > <cou1>) }
  4697.   - (total ^net-name <garb3> ^row-col <garb4> ^coor <garb5> ^level-pins <cou2> ^total-pins <cou2>)
  4698.   -->
  4699.     (remove <t1>)
  4700. )
  4701.  
  4702. (p p401
  4703.     (context ^present choose-between-nets-on-the-same-row-col)
  4704.     (total ^net-name <garb1> ^row-col <garb2> ^coor <garb3> ^level-pins <cou1> ^total-pins <cou2>)
  4705.     { <t1> (total ^net-name <garb4> ^row-col <garb5> ^coor <garb6> ^level-pins < <cou1> ^total-pins < <cou2>) }
  4706.   -->
  4707.     (remove <t1>)
  4708. )
  4709.  
  4710. (p p402
  4711.     (context ^present choose-between-nets-on-the-same-row-col)
  4712.   -->
  4713.     (modify 1 ^present choose-between-nets-on-the-same-row-col-con)
  4714. )
  4715.  
  4716. (p p403
  4717.     (context ^present choose-between-nets-on-the-same-row-col-con)
  4718.     { <t1> (total ^net-name <nn> ^row-col row ^level-pins <cou> ^total-pins <cou2> ^cong nil) }
  4719.     (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou2>)
  4720.     (pin ^net-name <nn> ^pin-x <px1>)
  4721.   - (pin ^net-name <nn> ^pin-x < <px1>)
  4722.     (pin ^net-name <nn> ^pin-x { <px2> > <px1> })
  4723.   - (pin ^net-name <nn> ^pin-x > <px2>)
  4724.     (congestion ^direction col ^coordinate { >= <px1> <= <px2> } ^no-of-nets <non>)
  4725.   - (congestion ^direction col ^coordinate { >= <px1> <= <px2> } ^no-of-nets > <non>)
  4726.   -->
  4727.     (modify <t1> ^cong <non>)
  4728. )
  4729.  
  4730. (p p404
  4731.     (context ^present choose-between-nets-on-the-same-row-col-con)
  4732.     { <t1> (total ^net-name <nn> ^row-col col ^level-pins <cou> ^total-pins <cou2> ^cong nil) }
  4733.     (total <> <nn> { } { } <cou> <cou2>)
  4734.     (pin ^net-name <nn> ^pin-y <py1>)
  4735.   - (pin ^net-name <nn> ^pin-y < <py1>)
  4736.     (pin ^net-name <nn> ^pin-y { <py2> > <py1> })
  4737.   - (pin ^net-name <nn> ^pin-y > <py2>)
  4738.     (congestion ^direction row ^coordinate { >= <py1> <= <py2> } ^no-of-nets <non>)
  4739.   - (congestion ^direction row ^coordinate { >= <py1> <= <py2> } ^no-of-nets > <non>)
  4740.   -->
  4741.     (modify <t1> ^cong <non>)
  4742. )
  4743.  
  4744. (p p405
  4745.     (context ^present choose-between-nets-on-the-same-row-col-con)
  4746.     (total ^net-name <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy <min1> ^max-xy <max1>)
  4747.     (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy { <min2> > <max1> } ^max-xy <max2>)
  4748.     { <t> (total ^net-name <nn1> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy <= <max1> ^max-xy >= <min2>) }
  4749.   -->
  4750.     (remove <t>)
  4751. )
  4752.  
  4753. (p p406
  4754.     (context ^present choose-between-nets-on-the-same-row-col-con)
  4755.     (total ^net-name <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy <min1> ^max-xy <max1>)
  4756.     { <t> (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy >= <min1> ^max-xy <= <max1>) }
  4757.   -->
  4758.     (remove <t>)
  4759. )
  4760.  
  4761. (p p407
  4762.     (context ^present choose-between-nets-on-the-same-row-col-con)
  4763.     (total ^net-name <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil })
  4764.     { <t> (total ^net-name { <nn1> <> <nn> } ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil }) }
  4765.     (<< vertical-cycle horizontal-cycle >> <nn1>)
  4766.   -->
  4767.     (remove <t>)
  4768. )
  4769.  
  4770. (p p408
  4771.     (context ^present choose-between-nets-on-the-same-row-col-con)
  4772.     (total ^net-name <nn> ^row-col row ^coor <y> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil })
  4773.     { <t> (total ^net-name { <nn1> <> <nn> } ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil }) }
  4774.     (pin ^net-name <nn1> ^pin-y { <py> < <y> } ^pin-channel-side << left right >>)
  4775.   - (pin ^net-name <nn> ^pin-y { > <py> < <y> } ^pin-channel-side << left right >>)
  4776.   -->
  4777.     (remove <t>)
  4778. )
  4779.  
  4780. (p p409
  4781.     (context ^present choose-between-nets-on-the-same-row-col-con)
  4782.     (total ^net-name <nn> ^row-col row ^coor <y> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil })
  4783.     { <t> (total ^net-name { <nn1> <> <nn> } ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil }) }
  4784.     (pin ^net-name <nn1> ^pin-y { <py> > <y> } ^pin-channel-side << left right >>)
  4785.   - (pin ^net-name <nn> ^pin-y { > <y> < <py> } ^pin-channel-side << left right >>)
  4786.   -->
  4787.     (remove <t>)
  4788. )
  4789.  
  4790. (p p410
  4791.     (context ^present choose-between-nets-on-the-same-row-col-con)
  4792.     (total ^net-name <nn> ^level-pins <cou> ^total-pins <cou2> ^cong <non>)
  4793.   - (total ^cong nil)
  4794.     { <t> (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou2> ^cong <= <non>) }
  4795.   -->
  4796.     (remove <t>)
  4797. )
  4798.  
  4799. (p p411
  4800.     (context ^present choose-between-nets-on-the-same-row-col)
  4801.     (total ^net-name <nn1> ^row-col <rc1> ^coor <xy1> ^level-pins <cou> ^total-pins > <cou>)
  4802.     { <t1> (total ^net-name <nn2> ^row-col { <rc2> <> <rc1> } ^coor <xy2> ^level-pins <cou> ^total-pins > <cou>) }
  4803.     { <t2> (total ^net-name <> <nn2> ^row-col <rc2> ^coor <xy2> ^level-pins <cou> ^total-pins > <cou>) }
  4804.   -->
  4805.     (remove <t1> <t2>)
  4806. )
  4807.  
  4808. (p p412
  4809.     (context ^present choose-between-nets-on-the-same-row-col)
  4810.     (total ^net-name <nn1> ^row-col <rc1> ^coor <xy1> ^level-pins <cou> ^total-pins > <cou>)
  4811.     { <t1> (total ^net-name <nn2> ^row-col <rc2> ^coor { <xy2> <> <xy1> } ^level-pins <cou> ^total-pins > <cou>) }
  4812.     { <t2> (total ^net-name <> <nn2> ^row-col <rc2> ^coor <xy2> ^level-pins <cou> ^total-pins > <cou>) }
  4813.   -->
  4814.     (remove <t1> <t2>)
  4815. )
  4816.  
  4817. (p p413
  4818.     (context ^present find-no-of-vcg-hcg)
  4819.     (net ^net-name <nn> ^no-of-bottom-pins { <np> > 1 } ^net-is-routed <> yes)
  4820.   - (total-verti <nn> bottom)
  4821.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4822.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
  4823.   -->
  4824.     (make total-verti <nn> bottom 0 <np>)
  4825. )
  4826.  
  4827. (p p414
  4828.     (context ^present find-no-of-vcg-hcg)
  4829.     (net ^net-name <nn> ^no-of-bottom-pins { <np> > 0 } ^net-is-routed <> yes)
  4830.   - (total-verti <nn> bottom)
  4831.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4832.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
  4833.     (constraint ^constraint-type << horizontal vertical >> ^net-name-1 <nn>)
  4834.   -->
  4835.     (make total-verti <nn> bottom 0 <np>)
  4836. )
  4837.  
  4838. (p p415
  4839.     (context ^present find-no-of-vcg-hcg)
  4840.     (net ^net-name <nn> ^no-of-bottom-pins { <np> > 0 } ^net-is-routed <> yes)
  4841.   - (total-verti <nn> bottom)
  4842.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4843.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
  4844.     (constraint ^constraint-type << horizontal vertical >> ^net-name-2 <nn>)
  4845.   -->
  4846.     (make total-verti <nn> bottom 0 <np>)
  4847. )
  4848.  
  4849. (p p416
  4850.     (context ^present find-no-of-vcg-hcg)
  4851.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <garb1>)
  4852.     (pin ^net-name <nn> ^pin-x <gx> ^pin-channel-side top ^pin-name <pn1>)
  4853.     (net ^net-name { <nn1> <> <nn> } ^no-of-bottom-pins { <np> > 0 } ^net-is-routed <> yes)
  4854.     (pin ^net-name <nn1> ^pin-x <gx> ^pin-channel-side bottom ^pin-name <pn2>)
  4855.   - (total-verti <nn1> bottom)
  4856.   - (constraint ^constraint-type vertical ^net-name-1 <nn> ^net-name-2 <nn1> ^pin-name-1 <pn1> ^pin-name-2 <pn2>)
  4857.   -->
  4858.     (make counted-verti <nn1> bottom <nn> <pn1> <pn2>)
  4859.     (make total-verti <nn1> bottom 1 <np>)
  4860. )
  4861.  
  4862. (p p417
  4863.     (context ^present find-no-of-vcg-hcg)
  4864.     (net ^net-name <nn> ^no-of-left-pins { <np> > 1 } ^net-is-routed <> yes)
  4865.   - (total-verti <nn> left)
  4866.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4867.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side left)
  4868.   -->
  4869.     (make total-verti <nn> left 0 <np>)
  4870. )
  4871.  
  4872. (p p418
  4873.     (context ^present find-no-of-vcg-hcg)
  4874.     (net ^net-name <nn> ^no-of-left-pins { <np> > 0 } ^net-is-routed <> yes)
  4875.   - (total-verti <nn> left)
  4876.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4877.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side left)
  4878.     (constraint ^constraint-type << horizontal vertical >> ^net-name-1 <nn>)
  4879.   -->
  4880.     (make total-verti <nn> left 0 <np>)
  4881. )
  4882.  
  4883. (p p419
  4884.     (context ^present find-no-of-vcg-hcg)
  4885.     (net ^net-name <nn> ^no-of-left-pins { <np> > 0 } ^net-is-routed <> yes)
  4886.   - (total-verti <nn> left)
  4887.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4888.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side left)
  4889.     (constraint ^constraint-type << horizontal vertical >> ^net-name-2 <nn>)
  4890.   -->
  4891.     (make total-verti <nn> left 0 <np>)
  4892. )
  4893.  
  4894. (p p420
  4895.     (context ^present find-no-of-vcg-hcg)
  4896.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <gy> ^grid-layer <garb3> ^pin-name <garb2>)
  4897.     (pin ^net-name <nn> ^pin-y <gy> ^pin-channel-side right ^pin-name <pn1>)
  4898.     (net ^net-name { <nn1> <> <nn> } ^no-of-left-pins { <np> > 0 } ^net-is-routed <> yes)
  4899.     (pin ^net-name <nn1> ^pin-y <gy> ^pin-channel-side left ^pin-name <pn2>)
  4900.   - (total-verti <nn1> left)
  4901.   - (constraint ^constraint-type horizontal ^net-name-1 <nn> ^net-name-2 <nn1> ^pin-name-1 <pn1> ^pin-name-2 <pn2>)
  4902.   -->
  4903.     (make counted-verti <nn1> left <nn> <pn1> <pn2>)
  4904.     (make total-verti <nn1> left 1 <np>)
  4905. )
  4906.  
  4907. (p p421
  4908.     (context ^present find-no-of-vcg-hcg)
  4909.     (net ^net-name <nn> ^no-of-top-pins { <np> > 1 } ^net-is-routed <> yes)
  4910.   - (total-verti <nn> top)
  4911.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4912.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
  4913.   -->
  4914.     (make total-verti <nn> top 0 <np>)
  4915. )
  4916.  
  4917. (p p422
  4918.     (context ^present find-no-of-vcg-hcg)
  4919.     (net ^net-name <nn> ^no-of-top-pins { <np> > 0 } ^net-is-routed <> yes)
  4920.   - (total-verti <nn> top)
  4921.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4922.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
  4923.     (constraint ^constraint-type << horizontal vertical >> ^net-name-1 <nn>)
  4924.   -->
  4925.     (make total-verti <nn> top 0 <np>)
  4926. )
  4927.  
  4928. (p p423
  4929.     (context ^present find-no-of-vcg-hcg)
  4930.     (net ^net-name <nn> ^no-of-top-pins { <np> > 0 } ^net-is-routed <> yes)
  4931.   - (total-verti <nn> top)
  4932.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4933.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
  4934.     (constraint ^constraint-type << horizontal vertical >> ^net-name-2 <nn>)
  4935.   -->
  4936.     (make total-verti <nn> top 0 <np>)
  4937. )
  4938.  
  4939. (p p424
  4940.     (context ^present find-no-of-vcg-hcg)
  4941.     (net ^net-name <nn> ^no-of-right-pins { <np> > 1 } ^net-is-routed <> yes)
  4942.   - (total-verti <nn> right)
  4943.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4944.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side right)
  4945.   -->
  4946.     (make total-verti <nn> right 0 <np>)
  4947. )
  4948.  
  4949. (p p425
  4950.     (context ^present find-no-of-vcg-hcg)
  4951.     (net ^net-name <nn> ^no-of-right-pins { <np> > 0 } ^net-is-routed <> yes)
  4952.   - (total-verti <nn> right)
  4953.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4954.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side right)
  4955.     (constraint ^constraint-type << horizontal vertical >> ^net-name-1 <nn>)
  4956.   -->
  4957.     (make total-verti <nn> right 0 <np>)
  4958. )
  4959.  
  4960. (p p426
  4961.     (context ^present find-no-of-vcg-hcg)
  4962.     (net ^net-name <nn> ^no-of-right-pins { <np> > 0 } ^net-is-routed <> yes)
  4963.   - (total-verti <nn> right)
  4964.     (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
  4965.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side right)
  4966.     (constraint ^constraint-type << horizontal vertical >> ^net-name-2 <nn>)
  4967.   -->
  4968.     (make total-verti <nn> right 0 <np>)
  4969. )
  4970.  
  4971. (p p427
  4972.     (context ^present find-no-of-vcg-hcg)
  4973.     (total-verti <nn> bottom <ntc>)
  4974.     (constraint ^constraint-type vertical ^net-name-1 <tn> ^net-name-2 <nn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  4975.   - (counted-verti <nn> bottom <tn> <tpn> <bpn>)
  4976.   -->
  4977.     (make counted-verti <nn> bottom <tn> <tpn> <bpn>)
  4978.     (modify 2 ^4 (compute <ntc> + 1))
  4979. )
  4980.  
  4981. (p p428
  4982.     (context ^present find-no-of-vcg-hcg)
  4983.     (total-verti <nn> left <ntc>)
  4984.     (constraint ^constraint-type horizontal ^net-name-1 <tn> ^net-name-2 <nn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  4985.   - (counted-verti <nn> left <tn> <tpn> <bpn>)
  4986.   -->
  4987.     (make counted-verti <nn> left <tn> <tpn> <bpn>)
  4988.     (modify 2 ^4 (compute <ntc> + 1))
  4989. )
  4990.  
  4991. (p p429
  4992.     (context ^present find-no-of-vcg-hcg)
  4993.     (total-verti <nn> top <ntc>)
  4994.     (constraint ^constraint-type vertical ^net-name-1 <nn> ^net-name-2 <bn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  4995.   - (counted-verti <nn> top <bn> <tpn> <bpn>)
  4996.   -->
  4997.     (make counted-verti <nn> top <bn> <tpn> <bpn>)
  4998.     (modify 2 ^4 (compute <ntc> + 1))
  4999. )
  5000.  
  5001. (p p430
  5002.     (context ^present find-no-of-vcg-hcg)
  5003.     (total-verti <nn> right <ntc>)
  5004.     (constraint ^constraint-type horizontal ^net-name-1 <nn> ^net-name-2 <bn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  5005.   - (counted-verti <nn> right <bn> <tpn> <bpn>)
  5006.   -->
  5007.     (make counted-verti <nn> right <bn> <tpn> <bpn>)
  5008.     (modify 2 ^4 (compute <ntc> + 1))
  5009. )
  5010.  
  5011. (p p431
  5012.     (context ^present find-no-of-vcg-hcg)
  5013.   -->
  5014.     (remove 1)
  5015.     (make context ^previous find-no-of-vcg-hcg)
  5016. )
  5017.  
  5018. (p p432
  5019.     (context ^previous find-no-of-vcg-hcg)
  5020.     (total-verti)
  5021.   -->
  5022.     (remove 1)
  5023.     (make context ^present choose-between-total-verti)
  5024.     (make context ^present choose-between-total-verti-0)
  5025. )
  5026.  
  5027. (p p433
  5028.     (context ^present choose-between-total-verti)
  5029.   - (total-verti ^4 0)
  5030.     { <t> (total-verti <nn> bottom <garb> > 1) }
  5031.   - (ff ^net-name <nn> ^came-from south)
  5032.   -->
  5033.     (remove <t>)
  5034. )
  5035.  
  5036. (p p434
  5037.     (context ^present choose-between-total-verti)
  5038.   - (total-verti ^4 0)
  5039.     { <t> (total-verti <nn> top <garb> > 1) }
  5040.   - (ff ^net-name <nn> ^came-from north)
  5041.   -->
  5042.     (remove <t>)
  5043. )
  5044.  
  5045. (p p435
  5046.     (context ^present choose-between-total-verti)
  5047.   - (total-verti ^4 0)
  5048.     { <t> (total-verti <nn> left <garb> > 1) }
  5049.   - (ff ^net-name <nn> ^came-from west)
  5050.   -->
  5051.     (remove <t>)
  5052. )
  5053.  
  5054. (p p436
  5055.     (context ^present choose-between-total-verti)
  5056.   - (total-verti ^4 0)
  5057.     { <t> (total-verti <nn> right <garb> > 1) }
  5058.   - (ff ^net-name <nn> ^came-from east)
  5059.   -->
  5060.     (remove <t>)
  5061. )
  5062.  
  5063. (p p437
  5064.     (context ^present choose-between-total-verti)
  5065.   -->
  5066.     (modify 1 ^present extend-total-verti)
  5067. )
  5068.  
  5069. (p p438
  5070.     (context ^present choose-between-total-verti)
  5071.     (total-verti ^4 > 0)
  5072.     (total-verti ^4 0)
  5073.   -->
  5074.     (remove 3)
  5075. )
  5076.  
  5077. (p p439
  5078.     (context ^present choose-between-total-verti)
  5079.     (total-verti <nn> { << top bottom >> <tb> } > 0)
  5080.     (total-verti <nn> { << top bottom >> <> <tb> } 0)
  5081.   -->
  5082.     (remove 3)
  5083. )
  5084.  
  5085. (p p440
  5086.     (context ^present choose-between-total-verti)
  5087.     (total-verti <nn> { << left right >> <tb> } > 0)
  5088.     (total-verti <nn> { << left right >> <> <tb> } 0)
  5089.   -->
  5090.     (remove 3)
  5091. )
  5092.  
  5093. (p p441
  5094.     (context ^present choose-between-total-verti-0)
  5095.     (total-verti <nn> { << top bottom >> <tb> } > 0)
  5096.     (total-verti <nn> { << top bottom >> <> <tb> } > 0)
  5097.   -->
  5098.     (remove 2 3)
  5099. )
  5100.  
  5101. (p p442
  5102.     (context ^present choose-between-total-verti-0)
  5103.     (total-verti <nn> { << left right >> <tb> } > 0)
  5104.     (total-verti <nn> { << left right >> <> <tb> } > 0)
  5105.   -->
  5106.     (remove 2 3)
  5107. )
  5108.  
  5109. (p p443
  5110.     (context ^present choose-between-total-verti-0)
  5111.   -->
  5112.     (remove 1)
  5113. )
  5114.  
  5115. (p p444
  5116.     (context ^present extend-total-verti)
  5117.     (total-verti <nn> bottom ^5 > 1)
  5118.   - (total-verti ^5 1)
  5119.     (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>)
  5120.   - (ff ^net-name <nn> ^grid-y < <gy>)
  5121.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy> ^com <gx>)
  5122.     (vertical ^net-name nil ^min { <min> <= <gy> } ^max { > <min> > <gy> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  5123.     (congestion ^direction row ^coordinate <como> ^como <gy>)
  5124.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <como> ^layer <lay>)
  5125.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <como> ^max >= <como> ^com <gx> ^layer <lay>)
  5126.   -->
  5127.     (make vertical ^net-name nil ^min <min> ^max <gy> ^min-net <mn> ^max-net <nn> ^commo <vcmo> ^compo <vcpo> ^com <gx> ^layer <lay>)
  5128.     (modify 4 ^min <como> ^min-net <nn>)
  5129.     (make vertical ^net-name <nn> ^min <gy> ^max <como> ^layer <lay> ^commo <vcmo> ^compo <vcpo> ^pin-name <pn> ^com <gx>)
  5130.     (modify 3 ^grid-y <como> ^can-chng-layer nil)
  5131.     (remove 2)
  5132. )
  5133.  
  5134. (p p445
  5135.     (context ^present extend-total-verti)
  5136.     (total-verti <nn> left ^5 > 1)
  5137.   - (total-verti ^5 1)
  5138.     (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>)
  5139.   - (ff ^net-name <nn> ^grid-x < <gx>)
  5140.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max > <gx> ^com <gy>)
  5141.     (horizontal ^net-name nil ^min { <min> <= <gx> } ^max { > <min> > <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  5142.     (congestion ^direction col ^coordinate <como> ^como <gx>)
  5143.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <como> ^max >= <como> ^com <gy> ^layer <lay>)
  5144.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <como> ^layer <lay>)
  5145.   -->
  5146.     (make horizontal ^net-name nil ^min <min> ^max <gx> ^min-net <mn> ^max-net <nn> ^commo <hcmo> ^compo <hcpo> ^com <gy> ^layer <lay>)
  5147.     (modify 4 ^min <como> ^min-net <nn>)
  5148.     (make horizontal ^net-name <nn> ^min <gx> ^max <como> ^layer <lay> ^commo <hcmo> ^compo <hcpo> ^pin-name <pn> ^com <gy>)
  5149.     (modify 3 ^grid-x <como> ^can-chng-layer nil)
  5150.     (remove 2)
  5151. )
  5152.  
  5153. (p p446
  5154.     (context ^present extend-total-verti)
  5155.     (total-verti <nn> top ^5 > 1)
  5156.   - (total-verti ^5 1)
  5157.     (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>)
  5158.   - (ff ^net-name <nn> ^grid-y > <gy>)
  5159.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy> ^com <gx>)
  5160.     (vertical ^net-name nil ^max { <max> >= <gy> } ^min { < <max> < <gy> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^max-net <mn>)
  5161.     (congestion ^direction row ^coordinate <gy> ^como <como>)
  5162.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <como> ^layer <lay>)
  5163.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <como> ^max >= <como> ^com <gx> ^layer <lay>)
  5164.   -->
  5165.     (make vertical ^net-name nil ^min <gy> ^max <max> ^max-net <mn> ^min-net <nn> ^commo <vcmo> ^compo <vcpo> ^com <gx> ^layer <lay>)
  5166.     (modify 4 ^max <como> ^max-net <nn>)
  5167.     (make vertical ^net-name <nn> ^max <gy> ^min <como> ^layer <lay> ^commo <vcmo> ^compo <vcpo> ^pin-name <pn> ^com <gx>)
  5168.     (modify 3 ^grid-y <como> ^can-chng-layer nil)
  5169.     (remove 2)
  5170. )
  5171.  
  5172. (p p447
  5173.     (context ^present extend-total-verti)
  5174.     (total-verti <nn> right ^5 > 1)
  5175.   - (total-verti ^5 1)
  5176.     (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>)
  5177.   - (ff ^net-name <nn> ^grid-x > <gx>)
  5178.   - (horizontal ^net-name { <nn> <> nil } ^min < <gx> ^max >= <gx> ^status nil ^com <gy>)
  5179.     (horizontal ^net-name nil ^max { <max> >= <gx> } ^min { < <max> < <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^max-net <mn>)
  5180.     (congestion ^direction col ^coordinate <gx> ^como <como>)
  5181.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <como> ^max >= <como> ^com <gy> ^layer <lay>)
  5182.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <como> ^layer <lay>)
  5183.   -->
  5184.     (make horizontal ^net-name nil ^min <gx> ^max <max> ^max-net <mn> ^min-net <nn> ^commo <hcmo> ^compo <hcpo> ^com <gy> ^layer <lay>)
  5185.     (modify 4 ^max <como> ^max-net <nn>)
  5186.     (make horizontal ^net-name <nn> ^max <gx> ^min <como> ^layer <lay> ^commo <hcmo> ^compo <hcpo> ^pin-name <pn> ^com <gy>)
  5187.     (modify 3 ^grid-x <como> ^can-chng-layer nil)
  5188.     (remove 2)
  5189. )
  5190.  
  5191. (p p448
  5192.     (context ^present extend-total-verti)
  5193.     { <c2> (total-verti <nn> bottom ^5 1) }
  5194.     (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5195.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^pin-name <pn>) }
  5196.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5197.   - (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmin>)
  5198.     { <c6> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
  5199.     (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> >= <vvmin> < <vmin> })
  5200.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { >= <vvmin> < <hcom> })
  5201.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  5202.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  5203.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5204.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5205.   -->
  5206.     (modify <c6> ^max <hcom> ^max-net <nn>)
  5207.     (modify <c4> ^min <hcom>)
  5208.     (make pull-ff north <nn> <gx> <gy> <gx> <hcom>)
  5209.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from north)
  5210.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5211. )
  5212.  
  5213. (p p449
  5214.     (context ^present extend-total-verti)
  5215.     { <c2> (total-verti <nn> bottom ^5 1) }
  5216.     (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5217.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^pin-name <pn>) }
  5218.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5219.     { <c5> (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmin> ^grid-layer <garb1> ^pin-name <garb2>) }
  5220.     { <c7> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay> ^compo <garb3> ^commo <garb4>) }
  5221.     (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> >= <vvmin> < <vmin> })
  5222.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { >= <vvmin> < <hcom> })
  5223.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  5224.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  5225.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5226.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5227.   -->
  5228.     (modify <c7> ^max <hcom> ^max-net <nn>)
  5229.     (modify <c4> ^min <hcom>)
  5230.     (make pull-ff north <nn> <gx> <gy> <gx> <hcom>)
  5231.     (modify <c5> ^grid-y <hcom> ^grid-layer <lay>)
  5232.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5233. )
  5234.  
  5235. (p p450
  5236.     (context ^present extend-total-verti)
  5237.     { <c2> (total-verti <nn> bottom ^5 1) }
  5238.     (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5239.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^pin-name <pn>) }
  5240.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5241.     { <c6> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
  5242.     (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> >= <vvmin> < <vmin> })
  5243.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { >= <vvmin> < <hcom> })
  5244.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  5245.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  5246.     { <c41> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin1> > <gy> } ^com { <vcom1> > <gx> } ^layer <lay> ^pin-name <pn1>) }
  5247.   - (vertical-s ^net-name <> <nn> ^com <vcom1>)
  5248.     { <c61> (vertical ^net-name nil ^min <vvmin1> ^max { <vmin1> > <vvmin1> } ^com <vcom1> ^layer <lay>) }
  5249.     (horizontal ^net-name nil ^min { <hmin1> <= <gx> } ^max { > <hmin1> >= <vcom1> } ^com { <hcom1> >= <vvmin1> < <vmin1> <= <hcom> })
  5250.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom1> ^com { >= <vvmin1> < <hcom1> })
  5251.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom1> })
  5252.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin1> > <hcom1> })
  5253.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom1> ^max >= <vcom1> ^com <hcom1> ^layer <lay>)
  5254.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom1> ^max >= <hcom1> ^com <vcom> ^layer <lay>)
  5255.   -->
  5256.     (modify <c61> ^max <hcom1> ^max-net <nn>)
  5257.     (modify <c41> ^min <hcom1>)
  5258.     (make pull-ff north <nn> <gx> <gy> <gx> <hcom1>)
  5259.     (make ff ^net-name <nn> ^pin-name <pn1> ^grid-layer <lay> ^grid-x <vcom1> ^grid-y <hcom1> ^came-from north)
  5260.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5261. )
  5262.  
  5263. (p p451
  5264.     (context ^present extend-total-verti)
  5265.     { <c2> (total-verti <nn> bottom ^5 1) }
  5266.     (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5267.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> > <gx> } ^layer <lay> ^pin-name <pn>) }
  5268.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5269.   - (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmin>)
  5270.     { <c6> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay>) }
  5271.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom> } ^com { <hcom> >= <vvmin> < <vmin> })
  5272.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com { >= <vvmin> < <hcom> })
  5273.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom> })
  5274.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  5275.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5276.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5277.   -->
  5278.     (modify <c6> ^max <hcom> ^max-net <nn>)
  5279.     (modify <c4> ^min <hcom>)
  5280.     (make pull-ff north <nn> <gx> <gy> <gx> <hcom>)
  5281.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from north)
  5282.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5283. )
  5284.  
  5285. (p p452
  5286.     (context ^present extend-total-verti)
  5287.     { <c2> (total-verti <nn> bottom ^5 1) }
  5288.     (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5289.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> > <gx> } ^layer <lay> ^pin-name <pn>) }
  5290.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5291.     { <c5> (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmin> ^grid-layer <garb1> ^pin-name <garb2>) }
  5292.     { <c7> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay>) }
  5293.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom> } ^com { <hcom> >= <vvmin> < <vmin> })
  5294.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com { >= <vvmin> < <hcom> })
  5295.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom> })
  5296.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  5297.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5298.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5299.   -->
  5300.     (modify <c7> ^max <hcom> ^max-net <nn>)
  5301.     (modify <c4> ^min <hcom>)
  5302.     (make pull-ff north <nn> <gx> <gy> <gx> <hcom>)
  5303.     (modify <c5> ^grid-y <hcom> ^grid-layer <lay>)
  5304.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5305. )
  5306.  
  5307. (p p453
  5308.     (context ^present extend-total-verti)
  5309.     { <c2> (total-verti <nn> top ^5 1) }
  5310.     (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5311.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <vmax> < <gy> } ^com { <vcom> > <gx> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5312.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5313.   - (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmax>)
  5314.     { <c6> (vertical ^net-name nil ^min <vmax> ^max { <vvmax> > <vmax> } ^com <vcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
  5315.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom> } ^com { <hcom> <= <vvmax> > <vmax> })
  5316.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com { <= <vvmax> > <hcom> })
  5317.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom> })
  5318.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <vmax> < <hcom> })
  5319.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5320.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5321.   -->
  5322.     (modify <c6> ^min <hcom> ^min-net <nn>)
  5323.     (modify <c4> ^max <hcom>)
  5324.     (make pull-ff south <nn> <gx> <gy> <gx> <hcom>)
  5325.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from south)
  5326.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5327. )
  5328.  
  5329. (p p454
  5330.     (context ^present extend-total-verti)
  5331.     { <c2> (total-verti <nn> top ^5 1) }
  5332.     (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5333.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <vmax> < <gy> } ^com { <vcom> > <gx> } ^layer <lay> ^pin-name <pn>) }
  5334.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5335.     { <c5> (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmax> ^grid-layer <garb2> ^pin-name <garb3>) }
  5336.     { <c7> (vertical ^net-name nil ^min <vmax> ^max { <vvmax> > <vmax> } ^com <vcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
  5337.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom> } ^com { <hcom> <= <vvmax> > <vmax> })
  5338.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com { <= <vvmax> > <hcom> })
  5339.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom> })
  5340.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <vmax> < <hcom> })
  5341.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5342.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5343.   -->
  5344.     (modify <c7> ^min <hcom> ^min-net <nn>)
  5345.     (modify <c4> ^max <hcom>)
  5346.     (make pull-ff south <nn> <gx> <gy> <gx> <hcom>)
  5347.     (modify <c5> ^grid-y <hcom> ^grid-layer <lay>)
  5348.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5349. )
  5350.  
  5351. (p p455
  5352.     (context ^present extend-total-verti)
  5353.     { <c2> (total-verti <nn> top ^5 1) }
  5354.     (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5355.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <vmax> < <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5356.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5357.   - (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmax>)
  5358.     { <c6> (vertical ^net-name nil ^min <vmax> ^max { <vvmax> > <vmax> } ^com <vcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
  5359.     (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> <= <vvmax> > <vmax> })
  5360.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { <= <vvmax> > <hcom> })
  5361.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  5362.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <vmax> < <hcom> })
  5363.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5364.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5365.   -->
  5366.     (modify <c6> ^min <hcom> ^min-net <nn>)
  5367.     (modify <c4> ^max <hcom>)
  5368.     (make pull-ff south <nn> <gx> <gy> <gx> <hcom>)
  5369.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from south)
  5370.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5371. )
  5372.  
  5373. (p p456
  5374.     (context ^present extend-total-verti)
  5375.     { <c2> (total-verti <nn> top ^5 1) }
  5376.     (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5377.     { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <vmax> < <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5378.   - (vertical-s ^net-name <> <nn> ^com <vcom>)
  5379.     { <c5> (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmax> ^grid-layer <garb4> ^pin-name <garb5>) }
  5380.     { <c7> (vertical ^net-name nil ^min <vmax> ^max { <vvmax> > <vmax> } ^com <vcom> ^layer <lay> ^compo <garb6> ^commo <garb7>) }
  5381.     (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> <= <vvmax> > <vmax> })
  5382.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { <= <vvmax> > <hcom> })
  5383.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  5384.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <vmax> < <hcom> })
  5385.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5386.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5387.   -->
  5388.     (modify <c7> ^min <hcom> ^min-net <nn>)
  5389.     (modify <c4> ^max <hcom>)
  5390.     (make pull-ff south <nn> <gx> <gy> <gx> <hcom>)
  5391.     (modify <c5> ^grid-y <hcom> ^grid-layer <lay>)
  5392.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5393. )
  5394.  
  5395. (p p457
  5396.     (context ^present extend-total-verti)
  5397.     { <c2> (total-verti <nn> left ^5 1) }
  5398.     (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5399.     { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <hmin> > <gx> } ^max <garb1> ^com { <hcom> < <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5400.   - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  5401.   - (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <hcom>)
  5402.     { <c6> (horizontal ^net-name nil ^min <hhmin> ^max { <hmin> > <hhmin> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
  5403.     (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { > <vmin> >= <gy> } ^com { <vcom> >= <hhmin> < <hmin> })
  5404.   - (vertical ^net-name nil ^min <= <hcom> ^max >= <gy> ^com { >= <hhmin> < <vcom> })
  5405.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom> < <gy> })
  5406.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { < <hmin> > <vcom> })
  5407.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5408.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5409.   -->
  5410.     (modify <c6> ^max <vcom> ^max-net <nn>)
  5411.     (modify <c4> ^min <vcom>)
  5412.     (make pull-ff east <nn> <gx> <gy> <gy> <vcom>)
  5413.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from east)
  5414.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5415. )
  5416.  
  5417. (p p458
  5418.     (context ^present extend-total-verti)
  5419.     { <c2> (total-verti <nn> left ^5 1) }
  5420.     (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5421.     { <c4> (horizontal ^net-name { <nn> <> nil } ^min { <hmin> > <gx> } ^max <garb1> ^com { <hcom> < <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5422.   - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  5423.     { <c5> (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <hcom> ^grid-layer <garb4> ^pin-name <garb5>) }
  5424.     { <c7> (horizontal ^net-name nil ^min <hhmin> ^max { <hmin> > <hhmin> } ^com <hcom> ^layer <lay> ^compo <garb6> ^commo <garb7>) }
  5425.     (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { > <vmin> >= <gy> } ^com { <vcom> >= <hhmin> < <hmin> })
  5426.   - (vertical ^net-name nil ^min <= <hcom> ^max >= <gy> ^com { >= <hhmin> < <vcom> })
  5427.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom> < <gy> })
  5428.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { < <hmin> > <vcom> })
  5429.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5430.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5431.   -->
  5432.     (modify <c7> ^max <vcom> ^max-net <nn>)
  5433.     (modify <c4> ^min <vcom>)
  5434.     (make pull-ff east <nn> <gx> <gy> <gy> <vcom>)
  5435.     (modify <c5> ^grid-x <vcom> ^grid-layer <lay>)
  5436.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5437. )
  5438.  
  5439. (p p459
  5440.     (context ^present extend-total-verti)
  5441.     { <c2> (total-verti <nn> left ^5 1) }
  5442.     (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5443.     { <c4> (horizontal ^net-name { <nn> <> nil } ^min { <hmin> > <gx> } ^max <garb1> ^com { <hcom> > <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5444.   - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  5445.   - (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <hcom>)
  5446.     { <c6> (horizontal ^net-name nil ^max <hmin> ^min { <hhmin> < <hmin> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
  5447.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom> } ^com { <vcom> >= <hhmin> < <hmin> })
  5448.   - (vertical ^net-name nil ^min <= <gy> ^max >= <hcom> ^com { >= <hhmin> < <vcom> })
  5449.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <gy> < <hcom> })
  5450.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { < <hmin> > <vcom> })
  5451.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5452.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5453.   -->
  5454.     (modify <c6> ^max <vcom> ^max-net <nn>)
  5455.     (modify <c4> ^min <vcom>)
  5456.     (make pull-ff east <nn> <gx> <gy> <gy> <vcom>)
  5457.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from east)
  5458.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5459. )
  5460.  
  5461. (p p460
  5462.     (context ^present extend-total-verti)
  5463.     { <c2> (total-verti <nn> left ^5 1) }
  5464.     (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5465.     { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <hmin> > <gx> } ^max <garb1> ^com { <hcom> > <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5466.   - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  5467.     { <c5> (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <hcom> ^grid-layer <garb4> ^pin-name <garb5>) }
  5468.     { <c7> (horizontal ^net-name nil ^min <hhmin> ^max { <hmin> > <hhmin> } ^com <hcom> ^layer <lay> ^compo <garb6> ^commo <garb7>) }
  5469.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom> } ^com { <vcom> >= <hhmin> < <hmin> })
  5470.   - (vertical ^net-name nil ^min <= <gy> ^max >= <hcom> ^com { >= <hhmin> < <vcom> })
  5471.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <gy> < <hcom> })
  5472.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { < <hmin> > <vcom> })
  5473.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5474.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5475.   -->
  5476.     (modify <c7> ^max <vcom> ^max-net <nn>)
  5477.     (modify <c4> ^min <vcom>)
  5478.     (make pull-ff east <nn> <gx> <gy> <gy> <vcom>)
  5479.     (modify <c5> ^grid-x <vcom> ^grid-layer <lay>)
  5480.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5481. )
  5482.  
  5483. (p p461
  5484.     (context ^present extend-total-verti)
  5485.     { <c2> (total-verti <nn> right ^5 1) }
  5486.     (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5487.     { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <hmax> < <gx> } ^com { <hcom> > <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5488.   - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  5489.   - (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <hcom>)
  5490.     { <c6> (horizontal ^net-name nil ^min <hmax> ^max { <hhmax> > <hmax> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
  5491.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom> } ^com { <vcom> <= <hhmax> > <hmax> })
  5492.   - (vertical ^net-name nil ^min <= <gy> ^max >= <hcom> ^com { <= <hhmax> > <vcom> })
  5493.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <gy> < <hcom> })
  5494.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <hmax> < <vcom> })
  5495.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5496.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5497.   -->
  5498.     (modify <c6> ^min <vcom> ^min-net <nn>)
  5499.     (modify <c4> ^max <vcom>)
  5500.     (make pull-ff west <nn> <gx> <gy> <gy> <vcom>)
  5501.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from west)
  5502.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5503. )
  5504.  
  5505. (p p462
  5506.     (context ^present extend-total-verti)
  5507.     { <c2> (total-verti <nn> right ^5 1) }
  5508.     (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5509.     { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <hmax> < <gx> } ^com { <hcom> > <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5510.   - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  5511.     { <c5> (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <hcom> ^grid-layer <garb4> ^pin-name <garb5>) }
  5512.     { <c7> (horizontal ^net-name nil ^min <hmax> ^max { <hhmax> > <hmax> } ^com <hcom> ^layer <lay> ^compo <gabr6> ^commo <garb7>) }
  5513.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom> } ^com { <vcom> <= <hhmax> > <hmax> })
  5514.   - (vertical ^net-name nil ^min <= <gy> ^max >= <hcom> ^com { <= <hhmax> > <vcom> })
  5515.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <gy> < <hcom> })
  5516.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <hmax> < <vcom> })
  5517.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5518.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5519.   -->
  5520.     (modify <c7> ^min <vcom> ^min-net <nn>)
  5521.     (modify <c4> ^max <vcom>)
  5522.     (make pull-ff west <nn> <gx> <gy> <gy> <vcom>)
  5523.     (modify <c5> ^grid-x <vcom> ^grid-layer <lay>)
  5524.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5525. )
  5526.  
  5527. (p p463
  5528.     (context ^present extend-total-verti)
  5529.     { <c2> (total-verti <nn> right ^5 1) }
  5530.     (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5531.     { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <hmax> < <gx> } ^com { <hcom> < <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5532.   - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  5533.   - (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <hcom>)
  5534.     { <c6> (horizontal ^net-name nil ^min <hmax> ^max { <hhmax> > <hmax> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <gabr5>) }
  5535.     (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { > <vmin> >= <gy> } ^com { <vcom> <= <hhmax> > <hmax> })
  5536.   - (vertical ^net-name nil ^min <= <hcom> ^max >= <gy> ^com { <= <hhmax> > <vcom> })
  5537.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom> < <gy> })
  5538.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <hmax> < <vcom> })
  5539.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5540.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5541.   -->
  5542.     (modify <c6> ^min <vcom> ^min-net <nn>)
  5543.     (modify <c4> ^max <vcom>)
  5544.     (make pull-ff west <nn> <gx> <gy> <gy> <vcom>)
  5545.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from west)
  5546.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5547. )
  5548.  
  5549. (p p464
  5550.     (context ^present extend-total-verti)
  5551.     { <c2> (total-verti <nn> right ^5 1) }
  5552.     (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
  5553.     { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <hmax> < <gx> } ^com { <hcom> < <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  5554.   - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  5555.     { <c5> (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <hcom> ^grid-layer <garb4> ^pin-name <garb5>) }
  5556.     { <c7> (horizontal ^net-name nil ^min <hmax> ^max { <hhmax> > <hmax> } ^com <hcom> ^layer <lay> ^compo <garb6> ^commo <garb7>) }
  5557.     (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { > <vmin> >= <gy> } ^com { <vcom> <= <hhmax> > <hmax> })
  5558.   - (vertical ^net-name nil ^min <= <hcom> ^max >= <gy> ^com { <= <hhmax> > <vcom> })
  5559.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom> < <gy> })
  5560.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <hmax> < <vcom> })
  5561.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  5562.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  5563.   -->
  5564.     (modify <c7> ^min <vcom> ^min-net <nn>)
  5565.     (modify <c4> ^max <vcom>)
  5566.     (make pull-ff west <nn> <gx> <gy> <gy> <vcom>)
  5567.     (modify <c5> ^grid-x <vcom> ^grid-layer <lay>)
  5568.     (modify 1 ^present find-no-of-pins-on-a-row-col)
  5569. )
  5570.  
  5571. (p p465
  5572.     { <c1> (context ^present remove-total-verti-gt1) }
  5573.   -->
  5574.     (modify <c1> ^present find-no-of-pins-on-a-row-col)
  5575. )
  5576.  
  5577. (p p466
  5578.     { <c1> (context ^present extend-total-verti) }
  5579.   -->
  5580.     (modify <c1> ^present remove-total-verti-gt1)
  5581. )
  5582.  
  5583. (p p467
  5584.     (context ^present remove-total-verti-gt1)
  5585.     (total-verti ^5 > 1)
  5586.     { <t> (total-verti ^5 1) }
  5587.   -->
  5588.     (remove <t>)
  5589. )
  5590.  
  5591. (p p468
  5592.     { <c1> (context ^present remove-total-verti-gt1) }
  5593.     (total-verti ^5 > 1)
  5594.   - (total-verti ^5 1)
  5595.   -->
  5596.     (make remove-all-total-vertis)
  5597.     (modify <c1> ^present extend-total-verti)
  5598. )
  5599.  
  5600. (p p469
  5601.     { <c1> (context ^present remove-total-verti-gt1) }
  5602.     { <c> (remove-all-total-vertis) }
  5603.   - (total-verti)
  5604.   -->
  5605.     (remove <c>)
  5606.     (modify <c1> ^present propagate-constraint)
  5607. )
  5608.  
  5609. (p p470
  5610.     { <c1> (context ^present remove-total-verti-gt1) }
  5611.     { <c> (remove-all-total-vertis) }
  5612.   -->
  5613.     (remove <c>)
  5614.     (modify <c1> ^present find-no-of-pins-on-a-row-col)
  5615. )
  5616.  
  5617. (p p471
  5618.     { <c1> (context ^present << extend-total-verti remove-total-verti-gt1 >>) }
  5619.   - (total-verti)
  5620.   -->
  5621.     (modify <c1> ^present propagate-constraint)
  5622. )
  5623.  
  5624. (p p515
  5625.     { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  5626.   - (total)
  5627.     { <p> (pull-ff north <nn> <gx> <gy1> <gx> <gy2>) }
  5628.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^came-from south ^pin-name <pn>) }
  5629.     { <v> (vertical ^net-name nil ^min <gy1> ^max >= <gy2> ^com <gx> ^layer <lay>) }
  5630.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  5631.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  5632.   -->
  5633.     (remove <p> <c>)
  5634.     (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^max <gy2>)
  5635.     (modify <v> ^min <gy2> ^min-net <nn>)
  5636.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  5637.     (make context ^present find-no-of-pins-on-a-row-col)
  5638. )
  5639.  
  5640. (p p516
  5641.     { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  5642.   - (total)
  5643.     { <p> (pull-ff south <nn> <gx> <gy1> <gx> <gy2>) }
  5644.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^came-from north ^pin-name <pn>) }
  5645.     { <v> (vertical ^net-name nil ^min <= <gy2> ^max <gy1> ^com <gx> ^layer <lay>) }
  5646.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  5647.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  5648.   -->
  5649.     (remove <p> <c>)
  5650.     (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <gy2>)
  5651.     (modify <v> ^max <gy2> ^max-net <nn>)
  5652.     (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
  5653.     (make context ^present find-no-of-pins-on-a-row-col)
  5654. )
  5655.  
  5656. (p p517
  5657.     { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  5658.   - (total)
  5659.     { <p> (pull-ff east <nn> <gx1> <gy> <gx2> <gy>) }
  5660.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^came-from west ^pin-name <pn>) }
  5661.     { <v> (horizontal ^net-name nil ^min <gx1> ^max >= <gx2> ^com <gy> ^layer <lay>) }
  5662.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  5663.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  5664.   -->
  5665.     (remove <p> <c>)
  5666.     (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^max <gx2>)
  5667.     (modify <v> ^min <gx2> ^min-net <nn>)
  5668.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  5669.     (make context ^present find-no-of-pins-on-a-row-col)
  5670. )
  5671.  
  5672. (p p518
  5673.     { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  5674.   - (total)
  5675.     { <p> (pull-ff west <nn> <gx1> <gy> <gx2> <gy>) }
  5676.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^came-from east ^pin-name <pn>) }
  5677.     { <v> (horizontal ^net-name nil ^min <= <gx2> ^max <gx1> ^com <gy> ^layer <lay>) }
  5678.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  5679.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  5680.   -->
  5681.     (remove <p> <c>)
  5682.     (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <gx2>)
  5683.     (modify <v> ^max <gx2> ^max-net <nn>)
  5684.     (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
  5685.     (make context ^present find-no-of-pins-on-a-row-col)
  5686. )
  5687.  
  5688. (p p293
  5689.     (eliminate-total)
  5690.     (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^min-xy <min1> ^max-xy <max1> ^level-pins <p1>)
  5691.     { <t1> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy <min2> ^max-xy { <max2> > <max1> } ^level-pins < <p1>) }
  5692.   - (total ^row-col <rc> ^coor <xy> ^max-xy < <min2>)
  5693.   - (total ^row-col <rc> ^coor <xy> ^min-xy { > <max1> < <max2> })
  5694.   -->
  5695.     (remove <t1>)
  5696. )
  5697.  
  5698. (p p294
  5699.     (eliminate-total)
  5700.     (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^min-xy <min1> ^max-xy <max1> ^level-pins <p1>)
  5701.     { <t1> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy <min2> ^max-xy { <max2> < <max1> } ^level-pins < <p1>) }
  5702.   - (total ^row-col <rc> ^coor <xy> ^max-xy < <min2>)
  5703.   - (total ^row-col <rc> ^coor <xy> ^min-xy { > <max2> < <max1> })
  5704.   -->
  5705.     (remove <t1>)
  5706. )
  5707.  
  5708. (p p295
  5709.     (eliminate-total)
  5710.     (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^min-xy <min1> ^max-xy <max1> ^level-pins <p1>)
  5711.     { <t1> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy { <min2> < <min1> } ^max-xy <max2> ^level-pins < <p1>) }
  5712.   - (total ^row-col <rc> ^coor <xy> ^min-xy > <max2>)
  5713.   - (total ^row-col <rc> ^coor <xy> ^max-xy { > <min2> < <min1> })
  5714.   -->
  5715.     (remove <t1>)
  5716. )
  5717.  
  5718. (p p296
  5719.     (eliminate-total)
  5720.     (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^min-xy <min1> ^max-xy <max1> ^level-pins <p1>)
  5721.     { <t1> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy { <min2> > <min1> } ^max-xy <max2> ^level-pins < <p1>) }
  5722.   - (total ^row-col <rc> ^coor <xy> ^min-xy > <max2>)
  5723.   - (total ^row-col <rc> ^coor <xy> ^max-xy { > <min1> < <min2> })
  5724.   -->
  5725.     (remove <t1>)
  5726. )
  5727.  
  5728. (p p297
  5729.     (context ^present merge)
  5730.     { <m> (merge-direction left) }
  5731.     { <t1> (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^level-pins <lcou> ^total-pins <tcou> ^min-xy <min> ^max-xy <max>) }
  5732.   - (rmerge)
  5733.   - (total ^net-name <> <nn1> ^row-col <rc> ^coor <xy> ^max-xy < <max>)
  5734.     (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy > <max>)
  5735.   -->
  5736.     (remove <m>)
  5737.     (make merge-direction right)
  5738.     (make lmerge <nn1> <rc> <xy> <min> <max> <lcou> <tcou> (substr <t1> nets inf))
  5739. )
  5740.  
  5741. (p p298
  5742.     (context ^present merge)
  5743.     { <m> (merge-direction right) }
  5744.     { <t1> (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^level-pins <lcou> ^total-pins <tcou> ^min-xy <min> ^max-xy <max>) }
  5745.   - (lmerge)
  5746.   - (total ^net-name <> <nn1> ^row-col <rc> ^coor <xy> ^min-xy > <min>)
  5747.     (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^max-xy < <min>)
  5748.   -->
  5749.     (remove <m>)
  5750.     (make merge-direction left)
  5751.     (make rmerge <nn1> <rc> <xy> <min> <max> <lcou> <tcou> (substr <t1> nets inf))
  5752. )
  5753.  
  5754. (p p299
  5755.     { <c> (lmerge <nn1> <rc> <xy> <min> <max> <lcou> <tcou>) }
  5756.     { <t2> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins <cou3> ^total-pins <cou4> ^min-xy { <min1> > <max> } ^max-xy <max1>) }
  5757.   - (total ^row-col <rc> ^coor <xy> ^min-xy > <max> ^max-xy < <min1>)
  5758.   - (place-holder <rc> <xy> > <max> < <min1>)
  5759.   -->
  5760.     (make total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^level-pins (compute <lcou> + <cou3>) ^total-pins (compute <tcou> + <cou4>) ^min-xy <min> ^max-xy <max1> ^nets (substr <c> 9 inf) (substr <t2> nets inf))
  5761.     (make delete-merged <nn2> <rc> <xy> <min1> <max1> (genatom))
  5762. )
  5763.  
  5764. (p p300
  5765.     { <c> (rmerge <nn1> <rc> <xy> <min> <max> <lcou> <tcou>) }
  5766.     { <t2> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins <cou3> ^total-pins <cou4> ^min-xy <min1> ^max-xy { <max1> < <min> }) }
  5767.   - (total ^row-col <rc> ^coor <xy> ^min-xy > <max1> ^max-xy < <min>)
  5768.   - (place-holder <rc> <xy> > <max1> < <min>)
  5769.   -->
  5770.     (make total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins (compute <lcou> + <cou3>) ^total-pins (compute <tcou> + <cou4>) ^min-xy <min1> ^max-xy <max> ^nets (substr <c> 9 inf) (substr <t2> nets inf))
  5771.     (make rdelete-merged <nn2> <rc> <xy> <min1> <max1> (genatom))
  5772. )
  5773.  
  5774. (p p301
  5775.     { <d> (delete-merged <nn> <rc> <xy> <min> <max> <id>) }
  5776.     (delete-merged <nn> <rc> <xy> <min> <max> <> <id>)
  5777.   -->
  5778.     (remove <d>)
  5779. )
  5780.  
  5781. (p p302
  5782.     { <d> (rdelete-merged <nn> <rc> <xy> <min> <max> <id>) }
  5783.     (rdelete-merged <nn> <rc> <xy> <min> <max> <> <id>)
  5784.   -->
  5785.     (remove <d>)
  5786. )
  5787.  
  5788. (p p303
  5789.     (delete-merged <nn> <rc> <xy> <min> <max>)
  5790.     { <t> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max>) }
  5791.   - (lmerge)
  5792.   -->
  5793.     (remove <t>)
  5794. )
  5795.  
  5796. (p p304
  5797.     (rdelete-merged <nn> <rc> <xy> <min> <max>)
  5798.     { <t> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max>) }
  5799.   - (rmerge)
  5800.   -->
  5801.     (remove <t>)
  5802. )
  5803.  
  5804. (p p305
  5805.     { <d> (<< delete-merged rdelete-merged >>) }
  5806.   - (<< lmerge rmerge >>)
  5807.   -->
  5808.     (remove <d>)
  5809. )
  5810.  
  5811. (p p306
  5812.     (delete-merged <nn> <rc> <xy> <min> <max>)
  5813.     { <t1> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max> ^level-pins <cou1> ^total-pins <cou2>) }
  5814.     { <t2> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins <cou3> ^total-pins <cou4> ^min-xy <min1> ^max-xy { <max1> < <min> }) }
  5815.   - (lmerge)
  5816.   -->
  5817.     (make place-holder <rc> <xy> <min> <max> (genatom))
  5818.     (make total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins (compute <cou1> + <cou3>) ^total-pins (compute <cou2> + <cou4>) ^min-xy <min1> ^max-xy <max> ^nets (substr <t1> nets inf) (substr <t2> nets inf))
  5819. )
  5820.  
  5821. (p p307
  5822.     (rdelete-merged <nn> <rc> <xy> <min> <max>)
  5823.     { <t1> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max> ^level-pins <cou1> ^total-pins <cou2>) }
  5824.     { <t2> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins <cou3> ^total-pins <cou4> ^min-xy { <min1> > <max> } ^max-xy <max1>) }
  5825.   - (rmerge)
  5826.   -->
  5827.     (make place-holder <rc> <xy> <min> <max> (genatom))
  5828.     (make total ^net-name <nn> ^row-col <rc> ^coor <xy> ^level-pins (compute <cou1> + <cou3>) ^total-pins (compute <cou2> + <cou4>) ^min-xy <min> ^max-xy <max1> ^nets (substr <t1> nets inf) (substr <t2> nets inf))
  5829. )
  5830.  
  5831. (p p308
  5832.     { <p> (place-holder <rc> <xy> <min> <max> <id>) }
  5833.     (place-holder <rc> <xy> <min> <max> <> <id>)
  5834.   -->
  5835.     (remove <p>)
  5836. )
  5837.  
  5838. (p p309
  5839.     (<< lmerge rmerge >>)
  5840.     { <p> (place-holder <rc> <xy> <min> <max> <id>) }
  5841.   - (total ^row-col <rc> ^coor <xy> ^max-xy < <min>)
  5842.   -->
  5843.     (remove <p>)
  5844. )
  5845.  
  5846. (p p310
  5847.     (<< lmerge rmerge >>)
  5848.     { <p> (place-holder <rc> <xy> <min> <max> <id>) }
  5849.   - (total ^row-col <rc> ^coor <xy> ^min-xy > <max>)
  5850.   -->
  5851.     (remove <p>)
  5852. )
  5853.  
  5854. (p p311
  5855.     (context ^present merge)
  5856.     { <l> (lmerge <nn> <rc> <xy> <min> <max>) }
  5857.     { <t> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max>) }
  5858.   -->
  5859.     (remove <l> <t>)
  5860. )
  5861.  
  5862. (p p312
  5863.     (context ^present merge)
  5864.     { <l> (rmerge <nn> <rc> <xy> <min> <max>) }
  5865.     { <t> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max>) }
  5866.   -->
  5867.     (remove <l> <t>)
  5868. )
  5869.  
  5870. (p p313
  5871.     (context ^present merge)
  5872.     (total ^level-pins <cou> ^total-pins <cou>)
  5873.   - (total ^level-pins { <cou1> > <cou> } ^total-pins <cou1>)
  5874.     { <m> (maximum-total < <cou>) }
  5875.   -->
  5876.     (modify <m> ^2 <cou>)
  5877. )
  5878.  
  5879. (p p314
  5880.     (context ^present merge)
  5881.     (total ^row-col row ^coor 1 ^level-pins <cou> ^total-pins <cou>)
  5882.   - (total ^row-col row ^coor 1 ^level-pins { <cou1> > <cou> } ^total-pins <cou1>)
  5883.     { <m> (maximum-total ^5 1 < <cou>) }
  5884.   -->
  5885.     (modify <m> ^6 <cou>)
  5886. )
  5887.  
  5888. (p p315
  5889.     (context ^present merge)
  5890.     (last-row <lr>)
  5891.     (total ^row-col row ^coor <lr> ^level-pins <cou> ^total-pins <cou>)
  5892.   - (total ^row-col row ^coor <lr> ^level-pins { <cou1> > <cou> } ^total-pins <cou1>)
  5893.     { <m> (maximum-total ^7 <lr> < <cou>) }
  5894.   -->
  5895.     (modify <m> ^8 <cou>)
  5896. )
  5897.  
  5898. (p p316
  5899.     (context ^present merge)
  5900.     (total ^level-pins <cou1> ^total-pins <cou2>)
  5901.   - (total ^level-pins > <cou1> ^total-pins > <cou2>)
  5902.     { <m> (maximum-total <garb4> { <min1> < <cou1> }) }
  5903.   -->
  5904.     (modify <m> ^3 <cou1> ^4 <cou2>)
  5905. )
  5906.  
  5907. (p p317
  5908.     { <con> (context ^present merge) }
  5909.   -->
  5910.     (modify <con> ^present delete-totals)
  5911.     (make goal cleanup eliminate-total)
  5912.     (make goal cleanup merge-direction)
  5913. )
  5914.  
  5915. (p p318
  5916.     (context ^present delete-totals)
  5917.     (maximum-total <max> <garb1> <garb2>)
  5918.     { <t> (total ^level-pins { <cou> < <max> } ^total-pins <> <cou>) }
  5919.   -->
  5920.     (remove <t>)
  5921. )
  5922.  
  5923. (p p319
  5924.     (context ^present delete-totals)
  5925.     (maximum-total ^5 1 ^6 <cou>)
  5926.     { <t> (total ^row-col row ^coor 1 ^level-pins { <cou1> < <cou> } ^total-pins <cou1>) }
  5927.   -->
  5928.     (remove <t>)
  5929. )
  5930.  
  5931. (p p320
  5932.     (context ^present delete-totals)
  5933.     (maximum-total ^7 <lr> ^8 <cou>)
  5934.     { <t> (total ^row-col row ^coor <lr> ^level-pins { <cou1> < <cou> } ^total-pins <cou1>) }
  5935.   -->
  5936.     (remove <t>)
  5937. )
  5938.  
  5939. (p p321
  5940.     (context ^present delete-totals)
  5941.     (maximum-total <garb1> <min> <max>)
  5942.     { <t> (total ^level-pins { <cou> < <min> }) }
  5943.     (last-row <lr>)
  5944.     (total ^row-col row ^coor { <> 1 <> <lr> })
  5945.   -->
  5946.     (remove <t>)
  5947. )
  5948.  
  5949. (p p322
  5950.     (context ^present delete-totals)
  5951.     (total ^row-col <rc> ^coor <xy> ^level-pins <min> ^total-pins <max>)
  5952.     { <t1> (total ^row-col <rc> ^coor <xy> ^level-pins { <cou> <= <min> } ^total-pins > <max>) }
  5953.   -->
  5954.     (remove <t1>)
  5955. )
  5956.  
  5957. (p p323
  5958.     (context ^present delete-totals)
  5959.     { <m> (maximum-total <garb1> <garb2> <garb3>) }
  5960.   -->
  5961.     (remove <m>)
  5962. )
  5963.  
  5964. (p p324
  5965.     { <c1> (context ^present delete-totals) }
  5966.   - (maximum-total)
  5967.     { <t1> (total ^net-name <nn1> ^row-col row ^coor 1) }
  5968.     { <t2> (total ^net-name <nn2> ^row-col row ^coor <lr>) }
  5969.   - (total ^row-col row ^coor { <> 1 <> <lr> })
  5970.     (last-row <lr>)
  5971.   -->
  5972.     (remove <c1> <t1> <t2>)
  5973.     (make change-priority)
  5974.     (make tran-total row 1 (substr <t1> nets inf) end)
  5975.     (make tran-total row <lr> (substr <t2> nets inf) end)
  5976.     (make goal cleanup total)
  5977. )
  5978.  
  5979. (p p325
  5980.     (context ^present delete-totals)
  5981.   - (maximum-total)
  5982.     (total ^net-name <nn1> ^row-col row ^coor 1)
  5983.     (total ^net-name <nn2> ^row-col row ^coor <lr>)
  5984.     { <t1> (total ^net-name <> <nn1> ^row-col row ^coor 1) }
  5985.     (last-row <lr>)
  5986.   -->
  5987.     (remove <t1>)
  5988. )
  5989.  
  5990. (p p326
  5991.     { <t1> (tran-total <rc> <xy1> end) }
  5992.     { <t2> (tran-total <rc> <> <xy1> end) }
  5993.   -->
  5994.     (remove <t2>)
  5995.     (modify <t1> ^4 nil)
  5996. )
  5997.  
  5998. (p p519
  5999.     (context ^present random1)
  6000.     (net ^net-name <nn> ^net-no-of-pins 2)
  6001.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>)
  6002.     (vertical-layer <lay>)
  6003.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> <= <gy1> } ^grid-layer <lay>)
  6004.     (vertical ^net-name nil ^min { <vmin1> <= <gy1> } ^max { <vmax1> > <vmin1> >= <gy1> } ^com <gx1> ^layer <lay> ^compo <gx2> ^commo <cmo> ^min-net <vnn1>)
  6005.     (vertical ^net-name nil ^min { <vmin2> <= <gy2> } ^max { <vmax2> > <vmin2> >= <gy2> >= <vmin1> } ^com <gx2> ^layer <lay> ^compo <cpo> ^commo <garb1> ^max-net <vnn2>)
  6006.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> >= <gx2> > <hmin> } ^com { <hcom> <= <vmax1> >= <vmin1> <= <vmax2> >= <vmin2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  6007.   - (horizontal ^net-name <> nil ^com <hcom>)
  6008.   -->
  6009.     (remove 1 3 5)
  6010.     (make vertical ^com <gx1> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <gx2> ^commo <cmo> ^min-net <vnn1> ^max-net <nn>)
  6011.     (modify 6 ^min <gy1> ^min-net <nn>)
  6012.     (make vertical ^com <gx2> ^layer <lay> ^min <hcom> ^max <vmax2> ^compo <cpo> ^commo <gx1> ^min-net <nn> ^max-net <vnn2>)
  6013.     (modify 7 ^max <gy2> ^max-net <nn>)
  6014.     (make horizontal ^min <hmin> ^max <gx1> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  6015.     (modify 8 ^min <gx2> ^min-net <nn>)
  6016.     (make vertical ^com <gx1> ^layer <lay> ^min <hcom> ^max <gy1> ^commo <cmo> ^compo <gx2> ^net-name <nn> ^pin-name <pn>)
  6017.     (make vertical ^com <gx2> ^layer <lay> ^max <hcom> ^min <gy2> ^commo <gx1> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  6018.     (make horizontal ^com <hcom> ^layer <lay> ^min <gx1> ^max <gx2> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn>)
  6019.     (make context ^present check-for-routed-net)
  6020. )
  6021.  
  6022. (p p520
  6023.     (context ^present random1)
  6024.     (net ^net-name <nn> ^net-no-of-pins 2)
  6025.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>)
  6026.     (horizontal-layer <lay>)
  6027.     (ff ^net-name <nn> ^grid-x { <gx2> >= <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <lay>)
  6028.     (horizontal ^net-name nil ^min { <hmin1> <= <gx1> } ^max { <hmax1> > <hmin1> >= <gx1> } ^com <gy1> ^layer <lay> ^compo <gy2> ^commo <cmo> ^max-net <hnn1>)
  6029.     (horizontal ^net-name nil ^min { <hmin2> <= <gx2> } ^max { <hmax2> > <hmin2> >= <gx2> >= <hmax1> } ^com <gy2> ^layer <lay> ^compo <cpo> ^commo <garb1> ^min-net <hnn2>)
  6030.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> >= <gy2> > <vmin> } ^com { <vcom> <= <hmax1> >= <hmin1> <= <hmax2> >= <hmin2> } ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  6031.   - (vertical ^net-name <> nil ^com <vcom>)
  6032.   -->
  6033.     (remove 1 3 5)
  6034.     (make horizontal ^com <gy1> ^layer <lay> ^min <vcom> ^max <hmax1> ^compo <gy2> ^commo <cmo> ^min-net <nn> ^max-net <hnn1>)
  6035.     (modify 6 ^max <gx1> ^max-net <nn>)
  6036.     (make horizontal ^com <gy2> ^layer <lay> ^min <hmin2> ^max <vcom> ^compo <cpo> ^commo <gy1> ^min-net <hnn2> ^max-net <nn>)
  6037.     (modify 7 ^min <gx2> ^min-net <nn>)
  6038.     (make vertical ^min <vmin> ^max <gy1> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  6039.     (modify 8 ^min <gy2> ^min-net <nn>)
  6040.     (make horizontal ^com <gy1> ^layer <lay> ^min <gx1> ^max <vcom> ^commo <cmo> ^compo <gy2> ^net-name <nn> ^pin-name <pn>)
  6041.     (make horizontal ^com <gy2> ^layer <lay> ^min <vcom> ^max <gx2> ^commo <gy1> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  6042.     (make vertical ^com <vcom> ^layer <lay> ^min <gy1> ^max <gy2> ^commo <vcmo> ^compo <vcpo> ^net-name <nn> ^pin-name <pn>)
  6043.     (make context ^present check-for-routed-net)
  6044. )
  6045.  
  6046. (p p521
  6047.     (context ^present random1)
  6048.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6049.     (vertical ^status nil ^net-name { <nn> <> nil } ^com { <vcom1> > <gx> })
  6050.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { >= <gx> < <vcom1> })
  6051.     (vertical ^com { <vcom2> <= <vcom1> > <gx> })
  6052.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <vcom2>)
  6053.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom2> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  6054.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6055.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom2> ^max >= <vcom2> ^com <gy> ^layer <lay>)
  6056.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <= <vcom2> >= <gx> } ^layer <lay>)
  6057.   - (ff ^net-name <nn> ^grid-x < <gx>)
  6058.   - (ff ^grid-x <vcom2> ^grid-y <gy>)
  6059.   -->
  6060.     (make made-random-move)
  6061.     (make horizontal ^min <hmin> ^layer <lay> ^max <gx> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6062.     (modify 5 ^min <vcom2> ^min-net <nn>)
  6063.     (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx> ^max <vcom2> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
  6064.     (modify 2 ^grid-x <vcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from west)
  6065. )
  6066.  
  6067. (p p522
  6068.     (context ^present random1)
  6069.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6070.     (vertical ^status nil ^net-name { <nn> <> nil } ^com { <vcom1> < <gx> })
  6071.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { <= <gx> > <vcom1> })
  6072.     (vertical ^com { <vcom2> >= <vcom1> < <gx> })
  6073.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom2> ^max >= <gx>)
  6074.     (horizontal ^net-name nil ^min { <hmin> <= <vcom2> } ^max { > <hmin> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  6075.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6076.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom2> ^max >= <vcom2> ^com <gy> ^layer <lay>)
  6077.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <= <gx> >= <vcom2> } ^layer <lay>)
  6078.   - (ff ^net-name <nn> ^grid-x > <gx>)
  6079.   - (ff ^grid-x <vcom2> ^grid-y <gy>)
  6080.   -->
  6081.     (make made-random-move)
  6082.     (make horizontal ^min <hmin> ^layer <lay> ^max <vcom2> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6083.     (modify 5 ^min <gx> ^min-net <nn>)
  6084.     (make horizontal ^net-name <nn> ^pin-name <pn> ^min <vcom2> ^max <gx> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
  6085.     (modify 2 ^grid-x <vcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from east)
  6086. )
  6087.  
  6088. (p p523
  6089.     (context ^present random1)
  6090.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6091.     (ff ^net-name <nn> ^grid-x { <vcom1> < <gx> })
  6092.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { <= <gx> > <vcom1> })
  6093.     (vertical ^com { <vcom2> >= <vcom1> < <gx> })
  6094.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom2> ^max >= <gx>)
  6095.     (horizontal ^net-name nil ^min { <hmin> <= <vcom2> } ^max { > <hmin> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  6096.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6097.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom2> ^max >= <vcom2> ^com <gy> ^layer <lay>)
  6098.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <= <gx> >= <vcom2> } ^layer <lay>)
  6099.   - (ff ^net-name <nn> ^grid-x > <gx>)
  6100.   - (ff ^grid-x <vcom2> ^grid-y <gy>)
  6101.   -->
  6102.     (make made-random-move)
  6103.     (make horizontal ^min <hmin> ^layer <lay> ^max <vcom2> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6104.     (modify 5 ^min <gx> ^min-net <nn>)
  6105.     (make horizontal ^net-name <nn> ^pin-name <pn> ^min <vcom2> ^max <gx> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
  6106.     (modify 2 ^grid-x <vcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from east)
  6107. )
  6108.  
  6109. (p p524
  6110.     (context ^present random1)
  6111.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6112.     (horizontal ^status nil ^net-name { <nn> <> nil } ^com { <hcom1> < <gy> })
  6113.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom1> <= <gy> })
  6114.     (horizontal ^com { <hcom2> >= <hcom1> < <gy> })
  6115.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <hcom2> ^max >= <gy>)
  6116.     (vertical ^net-name nil ^min { <vmin> <= <hcom2> } ^max { > <vmin> >= <gy> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  6117.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  6118.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <hcom2> <= <gy> } ^layer <lay>)
  6119.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom2> ^max >= <hcom2> ^com <gx> ^layer <lay>)
  6120.   - (ff ^net-name <nn> ^grid-y > <gy>)
  6121.   - (ff ^grid-x <gx> ^grid-y <hcom2>)
  6122.   -->
  6123.     (make made-random-move)
  6124.     (make vertical ^min <vmin> ^layer <lay> ^max <hcom2> ^com <gx> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn>)
  6125.     (modify 5 ^min <gy> ^min-net <nn>)
  6126.     (make vertical ^net-name <nn> ^pin-name <pn> ^min <hcom2> ^max <gy> ^commo <vcmo> ^compo <vcpo> ^layer <lay> ^com <gx>)
  6127.     (modify 2 ^grid-y <hcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from north)
  6128. )
  6129.  
  6130. (p p525
  6131.     (context ^present random1)
  6132.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6133.     (horizontal ^status nil ^net-name { <nn> <> nil } ^com { <hcom1> > <gy> })
  6134.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <hcom1> >= <gy> })
  6135.     (horizontal ^com { <hcom2> <= <hcom1> > <gy> })
  6136.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <hcom2>)
  6137.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom2> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  6138.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  6139.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <gy> <= <hcom2> } ^layer <lay>)
  6140.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom2> ^max >= <hcom2> ^com <gx> ^layer <lay>)
  6141.   - (ff ^net-name <nn> ^grid-y < <gy>)
  6142.   - (ff ^grid-x <gx> ^grid-y <hcom2>)
  6143.   -->
  6144.     (make made-random-move)
  6145.     (make vertical ^min <vmin> ^layer <lay> ^max <gy> ^com <gx> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn>)
  6146.     (modify 5 ^min <hcom2> ^min-net <nn>)
  6147.     (make vertical ^net-name <nn> ^pin-name <pn> ^min <gy> ^max <hcom2> ^commo <vcmo> ^compo <vcpo> ^layer <lay> ^com <gx>)
  6148.     (modify 2 ^grid-y <hcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from south)
  6149. )
  6150.  
  6151. (p p526
  6152.     (context ^present random1)
  6153.   -->
  6154.     (remove 1)
  6155.     (make context ^present check-random-move)
  6156. )
  6157.  
  6158. (p p527
  6159.     { <c> (context ^present check-random-move) }
  6160.     { <m> (made-random-move) }
  6161.   -->
  6162.     (remove <c> <m>)
  6163.     (make context ^present check-for-routed-net)
  6164.     (make goal cleanup made-random-move)
  6165. )
  6166.  
  6167. (p p528
  6168.     { <c> (context ^present check-random-move) }
  6169.   - (made-random-move)
  6170.   -->
  6171.     (remove <c>)
  6172.     (make context ^present random2)
  6173. )
  6174.  
  6175. (p p529
  6176.     (context ^present random2)
  6177.   -->
  6178.     (write (crlf) |Sorry, I can not proceed anymore because of my ignorance.|)
  6179.     (halt)
  6180. )
  6181.  
  6182. (p p530
  6183.     (context ^present random0)
  6184.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6185.   - (ff ^net-name <nn> ^pin-name <> <pn>)
  6186.     (horizontal ^status nil ^net-name { <nn> <> nil } ^com { <hcom1> < <gy> })
  6187.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom1> <= <gy> })
  6188.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <hcom1> ^max >= <gy>)
  6189.     (vertical ^net-name nil ^min { <vmin> <= <hcom1> } ^max { > <vmin> >= <gy> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  6190.     (vertical-layer <lay>)
  6191.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  6192.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <hcom1> <= <gy> } ^layer <lay>)
  6193.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom1> ^max >= <hcom1> ^com <gx> ^layer <lay>)
  6194.   - (ff ^net-name <nn> ^grid-y > <gy>)
  6195.   -->
  6196.     (remove 1)
  6197.     (make vertical ^min <vmin> ^layer <lay> ^max <hcom1> ^com <gx> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn>)
  6198.     (modify 4 ^min <gy> ^min-net <nn>)
  6199.     (make vertical ^net-name <nn> ^pin-name <pn> ^min <hcom1> ^max <gy> ^commo <vcmo> ^compo <vcpo> ^layer <lay> ^com <gx>)
  6200.     (modify 2 ^grid-y <hcom1> ^grid-layer <lay> ^can-chng-layer nil ^came-from north)
  6201.     (make context ^present propagate-constraint)
  6202. )
  6203.  
  6204. (p p531
  6205.     (context ^present random0)
  6206.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6207.   - (ff ^net-name <nn> ^pin-name <> <pn>)
  6208.     (horizontal ^status nil ^net-name { <nn> <> nil } ^com { <hcom1> > <gy> })
  6209.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <hcom1> >= <gy> })
  6210.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <hcom1>)
  6211.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom1> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  6212.     (vertical-layer <lay>)
  6213.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  6214.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <gy> <= <hcom1> } ^layer <lay>)
  6215.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom1> ^max >= <hcom1> ^com <gx> ^layer <lay>)
  6216.   - (ff ^net-name <nn> ^grid-y < <gy>)
  6217.   -->
  6218.     (remove 1)
  6219.     (make vertical ^min <vmin> ^layer <lay> ^max <gy> ^com <gx> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn>)
  6220.     (modify 4 ^min <hcom1> ^min-net <nn>)
  6221.     (make vertical ^net-name <nn> ^pin-name <pn> ^min <gy> ^max <hcom1> ^commo <vcmo> ^compo <vcpo> ^layer <lay> ^com <gx>)
  6222.     (modify 2 ^grid-y <hcom1> ^grid-layer <lay> ^can-chng-layer nil ^came-from south)
  6223.     (make context ^present propagate-constraint)
  6224. )
  6225.  
  6226. (p p532
  6227.     (context ^present random0)
  6228.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6229.   - (ff ^net-name <nn> ^pin-name <> <pn>)
  6230.     (vertical ^status nil ^net-name { <nn> <> nil } ^com { <vcom1> < <gx> })
  6231.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { <= <gx> > <vcom1> })
  6232.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom1> ^max >= <gx>)
  6233.     (horizontal ^net-name nil ^min { <hmin> <= <vcom1> } ^max { > <hmin> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  6234.     (horizontal-layer <lay>)
  6235.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6236.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom1> ^max >= <vcom1> ^com <gy> ^layer <lay>)
  6237.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { >= <vcom1> <= <gx> } ^layer <lay>)
  6238.   - (ff ^net-name <nn> ^grid-x > <gx>)
  6239.   -->
  6240.     (remove 1)
  6241.     (make horizontal ^min <hmin> ^layer <lay> ^max <vcom1> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6242.     (modify 4 ^min <gx> ^min-net <nn>)
  6243.     (make horizontal ^net-name <nn> ^pin-name <pn> ^min <vcom1> ^max <gx> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
  6244.     (modify 2 ^grid-x <vcom1> ^grid-layer <lay> ^can-chng-layer nil ^came-from east)
  6245.     (make context ^present propagate-constraint)
  6246. )
  6247.  
  6248. (p p533
  6249.     (context ^present random0)
  6250.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6251.   - (ff ^net-name <nn> ^pin-name <> <pn>)
  6252.     (vertical ^status nil ^net-name { <nn> <> nil } ^com { <vcom1> > <gx> })
  6253.   - (vertical ^status nil ^net-name { <nn> <> nil } ^com { >= <gx> < <vcom1> })
  6254.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <vcom1>)
  6255.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom1> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  6256.     (horizontal-layer <lay>)
  6257.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6258.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom1> ^max >= <vcom1> ^com <gy> ^layer <lay>)
  6259.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { >= <gx> <= <vcom1> } ^layer <lay>)
  6260.   - (ff ^net-name <nn> ^grid-x < <gx>)
  6261.   -->
  6262.     (remove 1)
  6263.     (make horizontal ^min <hmin> ^layer <lay> ^max <gx> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6264.     (modify 4 ^min <vcom1> ^min-net <nn>)
  6265.     (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx> ^max <vcom1> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
  6266.     (modify 2 ^grid-x <vcom1> ^grid-layer <lay> ^can-chng-layer nil ^came-from west)
  6267.     (make context ^present propagate-constraint)
  6268. )
  6269.  
  6270. (p p534
  6271.     { <c> (context ^present random2) }
  6272.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
  6273.     (vertical ^status nil ^net-name { <nn> <> nil } ^com > <gx>)
  6274.     { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> > <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>) }
  6275.     (congestion ^direction col ^coordinate <gx2> ^como <gx>)
  6276.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6277.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6278.   -->
  6279.     (make horizontal ^min <hmin> ^layer <lay> ^max <gx> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6280.     (modify <h> ^min <gx2> ^min-net <nn>)
  6281.     (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx> ^max <gx2> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
  6282.     (modify <ff> ^grid-x <gx2> ^grid-layer <lay> ^can-chng-layer nil ^came-from west)
  6283.     (remove <c>)
  6284.     (make context ^present check-for-routed-net)
  6285. )
  6286.  
  6287. (p p535
  6288.     { <c> (context ^present random2) }
  6289.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
  6290.     (vertical ^status nil ^net-name { <nn> <> nil } ^com < <gx>)
  6291.     { <h> (horizontal ^net-name nil ^min { <hmin> < <gx> } ^max { <hmax> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>) }
  6292.     (congestion ^direction col ^coordinate <gx> ^como <gx2>)
  6293.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6294.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6295.   -->
  6296.     (make horizontal ^min <hmin> ^layer <lay> ^max <gx2> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6297.     (modify <h> ^min <gx> ^min-net <nn>)
  6298.     (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx2> ^max <gx> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
  6299.     (modify <ff> ^grid-x <gx2> ^grid-layer <lay> ^can-chng-layer nil ^came-from east)
  6300.     (remove <c>)
  6301.     (make context ^present check-for-routed-net)
  6302. )
  6303.  
  6304. (p p536
  6305.     { <c> (context ^present random2) }
  6306.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
  6307.     (horizontal ^status nil ^net-name { <nn> <> nil } ^com > <gy>)
  6308.     { <h> (vertical ^net-name nil ^min { <hmin> <= <gy> } ^max { <hmax> > <gy> } ^com <gx> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>) }
  6309.     (congestion ^direction row ^coordinate <gy2> ^como <gy>)
  6310.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  6311.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  6312.   -->
  6313.     (make vertical ^min <hmin> ^layer <lay> ^max <gy> ^com <gx> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6314.     (modify <h> ^min <gy2> ^min-net <nn>)
  6315.     (make vertical ^net-name <nn> ^pin-name <pn> ^min <gy> ^max <gy2> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gx>)
  6316.     (modify <ff> ^grid-y <gy2> ^grid-layer <lay> ^can-chng-layer nil ^came-from south)
  6317.     (remove <c>)
  6318.     (make context ^present check-for-routed-net)
  6319. )
  6320.  
  6321. (p p537
  6322.     { <c> (context ^present random2) }
  6323.     { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
  6324.     (horizontal ^status nil ^net-name { <nn> <> nil } ^com < <gy>)
  6325.     { <h> (vertical ^net-name nil ^min { <hmin> < <gy> } ^max { <hmax> >= <gy> } ^com <gx> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>) }
  6326.     (congestion ^direction row ^coordinate <gy> ^como <gy2>)
  6327.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  6328.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  6329.   -->
  6330.     (make vertical ^min <hmin> ^layer <lay> ^max <gy2> ^com <gx> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
  6331.     (modify <h> ^min <gy> ^min-net <nn>)
  6332.     (make vertical ^net-name <nn> ^pin-name <pn> ^min <gy2> ^max <gy> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gx>)
  6333.     (modify <ff> ^grid-y <gy2> ^grid-layer <lay> ^can-chng-layer nil ^came-from north)
  6334.     (remove <c>)
  6335.     (make context ^present check-for-routed-net)
  6336. )
  6337.  
  6338. (p p558
  6339.     (next-segment <nn> row <gy> nil <nmin> <nmax>)
  6340.     (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6341.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> <= <nmax> } ^grid-y <gy>)
  6342.   - (ff ^net-name <nn> ^grid-x { > <gx1> < <gx2> } ^grid-y <gy>)
  6343.     (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6344.   - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com <gy> ^layer <> <lay>)
  6345.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx1> ^max >= <gx2> ^com <gy>)
  6346.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  6347.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6348.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  6349.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6350.   -->
  6351.     (remove 2 3)
  6352.     (make horizontal ^com <gy> ^min <min> ^max <gx1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6353.     (make horizontal ^com <gy> ^min <gx2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6354.     (modify 4 ^min <gx1> ^max <gx2> ^net-name <nn> ^pin-name <pn>)
  6355. )
  6356.  
  6357. (p p559
  6358.     (next-segment <nn> row <gy> nil <nmin> <nmax>)
  6359.     (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6360.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx2> > <gx1> <= <nmax> })
  6361.   - (ff ^net-name <nn> ^grid-x { > <gx1> < <gx2> } ^grid-y <gy>)
  6362.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx1> < <gx2> })
  6363.     (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6364.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx1> ^max >= <gx2> ^com <gy>)
  6365.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  6366.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6367.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  6368.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6369.   -->
  6370.     (remove 2)
  6371.     (make horizontal ^com <gy> ^min <min> ^max <gx1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6372.     (make horizontal ^com <gy> ^min <gx2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6373.     (modify 4 ^min <gx1> ^max <gx2> ^net-name <nn> ^pin-name <pn>)
  6374. )
  6375.  
  6376. (p p560
  6377.     (next-segment <nn> row <gy> nil <nmin> <nmax>)
  6378.     (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6379.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx2> < <gx1> >= <nmin> })
  6380.   - (ff ^net-name <nn> ^grid-x { < <gx1> > <gx2> } ^grid-y <gy>)
  6381.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { < <gx1> > <gx2> })
  6382.     (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> >= <gx1> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6383.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx2> ^max >= <gx1> ^com <gy>)
  6384.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  6385.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6386.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  6387.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6388.   -->
  6389.     (remove 2)
  6390.     (make horizontal ^com <gy> ^min <min> ^max <gx2> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6391.     (make horizontal ^com <gy> ^min <gx1> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6392.     (modify 4 ^min <gx2> ^max <gx1> ^net-name <nn> ^pin-name <pn>)
  6393. )
  6394.  
  6395. (p p561
  6396.     (next-segment <nn> row <gy> nil <nmin> <nmax>)
  6397.     (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6398.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx2> > <gx1> <= <nmax> })
  6399.   - (ff ^net-name <nn> ^grid-x { > <gx1> < <gx2> } ^grid-y <gy>)
  6400.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx1> < <gx2> })
  6401.     (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6402.     (horizontal-layer <lay>)
  6403.     (dominant-layer)
  6404.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx1> ^max >= <gx2> ^com <gy>)
  6405.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  6406.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6407.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  6408.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6409.   -->
  6410.     (remove 2)
  6411.     (make horizontal ^com <gy> ^min <min> ^max <gx1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6412.     (make horizontal ^com <gy> ^min <gx2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6413.     (modify 4 ^min <gx1> ^max <gx2> ^net-name <nn> ^pin-name <pn>)
  6414. )
  6415.  
  6416. (p p562
  6417.     (next-segment <nn> row <gy> nil <nmin> <nmax>)
  6418.     (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6419.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx2> < <gx1> >= <nmin> })
  6420.   - (ff ^net-name <nn> ^grid-x { < <gx1> > <gx2> } ^grid-y <gy>)
  6421.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { < <gx1> > <gx2> })
  6422.     (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> >= <gx1> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6423.     (horizontal-layer <lay>)
  6424.     (dominant-layer)
  6425.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx2> ^max >= <gx1> ^com <gy>)
  6426.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  6427.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6428.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  6429.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6430.   -->
  6431.     (remove 2)
  6432.     (make horizontal ^com <gy> ^min <min> ^max <gx2> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6433.     (make horizontal ^com <gy> ^min <gx1> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6434.     (modify 4 ^min <gx2> ^max <gx1> ^net-name <nn> ^pin-name <pn>)
  6435. )
  6436.  
  6437. (p p563
  6438.     (next-segment <nn> row <gy> nil <nmin> <nmax>)
  6439.     (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  6440.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> <= <nmax> } ^grid-y <gy>)
  6441.   - (ff ^net-name <nn> ^grid-x { > <gx1> < <gx2> } ^grid-y <gy>)
  6442.     (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6443.     (horizontal-layer <lay>)
  6444.     (dominant-layer)
  6445.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx1> ^max >= <gx2> ^com <gy>)
  6446.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  6447.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6448.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  6449.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6450.   -->
  6451.     (remove 2 3)
  6452.     (make horizontal ^com <gy> ^min <min> ^max <gx1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6453.     (make horizontal ^com <gy> ^min <gx2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6454.     (modify 4 ^min <gx1> ^max <gx2> ^net-name <nn> ^pin-name <pn>)
  6455. )
  6456.  
  6457. (p p564
  6458.     (next-segment <nn> col <gx> nil <nmin> <nmax>)
  6459.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
  6460.     (ff ^net-name <nn> ^grid-y { <gy2> > <gy1> <= <nmax> } ^grid-x <gx>)
  6461.   - (ff ^net-name <nn> ^grid-y { > <gy1> < <gy2> } ^grid-x <gx>)
  6462.     (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6463.   - (vertical ^net-name nil ^min <= <gy1> ^max >= <gy2> ^com <gx> ^layer <> <lay>)
  6464.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy1> ^max >= <gy2> ^com <gx>)
  6465.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  6466.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  6467.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  6468.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  6469.   -->
  6470.     (remove 2 3)
  6471.     (make vertical ^com <gx> ^min <min> ^max <gy1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6472.     (make vertical ^com <gx> ^min <gy2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6473.     (modify 4 ^min <gy1> ^max <gy2> ^net-name <nn> ^pin-name <pn>)
  6474. )
  6475.  
  6476. (p p565
  6477.     (next-segment <nn> col <gx> nil <nmin> <nmax>)
  6478.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
  6479.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy2> > <gy1> <= <nmax> })
  6480.   - (ff ^net-name <nn> ^grid-y { > <gy1> < <gy2> } ^grid-x <gx>)
  6481.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy1> < <gy2> })
  6482.     (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6483.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy1> ^max >= <gy2> ^com <gx>)
  6484.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  6485.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  6486.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  6487.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  6488.   -->
  6489.     (remove 2)
  6490.     (make vertical ^com <gx> ^min <min> ^max <gy1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6491.     (make vertical ^com <gx> ^min <gy2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6492.     (modify 4 ^min <gy1> ^max <gy2> ^net-name <nn> ^pin-name <pn>)
  6493. )
  6494.  
  6495. (p p566
  6496.     (next-segment <nn> col <gx> nil <nmin> <nmax>)
  6497.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
  6498.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy2> < <gy1> >= <nmin> })
  6499.   - (ff ^net-name <nn> ^grid-y { > <gy2> < <gy1> } ^grid-x <gx>)
  6500.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy2> < <gy1> })
  6501.     (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> >= <gy1> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6502.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy2> ^max >= <gy1> ^com <gx>)
  6503.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  6504.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  6505.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  6506.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  6507.   -->
  6508.     (remove 2)
  6509.     (make vertical ^com <gx> ^min <min> ^max <gy2> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6510.     (make vertical ^com <gx> ^min <gy1> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6511.     (modify 4 ^min <gy2> ^max <gy1> ^net-name <nn> ^pin-name <pn>)
  6512. )
  6513.  
  6514. (p p567
  6515.     (next-segment <nn> col <gx> nil <nmin> <nmax>)
  6516.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
  6517.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy2> > <gy1> <= <nmax> })
  6518.   - (ff ^net-name <nn> ^grid-y { > <gy1> < <gy2> } ^grid-x <gx>)
  6519.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy1> < <gy2> })
  6520.     (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6521.     (vertical-layer <lay>)
  6522.     (dominant-layer)
  6523.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy1> ^max >= <gy2> ^com <gx>)
  6524.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  6525.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  6526.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  6527.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  6528.   -->
  6529.     (remove 2)
  6530.     (make vertical ^com <gx> ^min <min> ^max <gy1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6531.     (make vertical ^com <gx> ^min <gy2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6532.     (modify 4 ^min <gy1> ^max <gy2> ^net-name <nn> ^pin-name <pn>)
  6533. )
  6534.  
  6535. (p p568
  6536.     (next-segment <nn> col <gx> nil <nmin> <nmax>)
  6537.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
  6538.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy2> < <gy1> >= <nmin> })
  6539.   - (ff ^net-name <nn> ^grid-y { > <gy2> < <gy1> } ^grid-x <gx>)
  6540.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy2> < <gy1> })
  6541.     (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> >= <gy1> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6542.     (vertical-layer <lay>)
  6543.     (dominant-layer)
  6544.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy2> ^max >= <gy1> ^com <gx>)
  6545.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  6546.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  6547.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  6548.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  6549.   -->
  6550.     (remove 2)
  6551.     (make vertical ^com <gx> ^min <min> ^max <gy2> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6552.     (make vertical ^com <gx> ^min <gy1> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6553.     (modify 4 ^min <gy2> ^max <gy1> ^net-name <nn> ^pin-name <pn>)
  6554. )
  6555.  
  6556. (p p569
  6557.     (next-segment <nn> col <gx> nil <nmin> <nmax>)
  6558.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
  6559.     (ff ^net-name <nn> ^grid-y { <gy2> > <gy1> <= <nmax> } ^grid-x <gx>)
  6560.   - (ff ^net-name <nn> ^grid-y { > <gy1> < <gy2> } ^grid-x <gx>)
  6561.     (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  6562.     (vertical-layer <lay>)
  6563.     (dominant-layer)
  6564.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy1> ^max >= <gy2> ^com <gx>)
  6565.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  6566.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  6567.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  6568.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  6569.   -->
  6570.     (remove 2 3)
  6571.     (make vertical ^com <gx> ^min <min> ^max <gy1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
  6572.     (make vertical ^com <gx> ^min <gy2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
  6573.     (modify 4 ^min <gy1> ^max <gy2> ^net-name <nn> ^pin-name <pn>)
  6574. )
  6575.  
  6576. (p p570
  6577.     (next-segment <nn> row <gy> nil <nmin> <nmax>)
  6578.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <max> >= <nmin> <= <nmax> } ^com <gy> ^layer <garb2> ^compo <garb3> ^commo <garb4> ^pin-name <pn>)
  6579.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <max> ^max > <max> ^com <gy>)
  6580.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <min> > <max> <= <nmax> } ^com <gy>)
  6581.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <min> ^max >= <min> ^com <gy>)
  6582.     (horizontal ^net-name nil ^min <max> ^max { <min> > <max> } ^com <gy> ^layer <garb5> ^compo <garb6> ^commo <garb7>)
  6583.   -->
  6584.     (modify 4 ^net-name <nn> ^pin-name <pn> ^max-net nil ^min-net nil)
  6585. )
  6586.  
  6587. (p p571
  6588.     (next-segment <nn> col <gx> nil <nmin> <nmax>)
  6589.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <max> >= <nmin> <= <nmax> } ^com <gx> ^layer <garb2> ^compo <garb3> ^commo <garb4> ^pin-name <pn>)
  6590.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <max> ^max > <max> ^com <gx>)
  6591.     (vertical ^status nil ^net-name { <nn> <> nil } ^min { <min> > <max> <= <nmax> } ^com <gx>)
  6592.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <min> ^max >= <min> ^com <gx>)
  6593.     (vertical ^net-name nil ^min <max> ^max { <min> > <max> } ^com <gx> ^layer <garb5> ^compo <garb6> ^commo <garb7>)
  6594.   -->
  6595.     (modify 4 ^net-name <nn> ^pin-name <pn> ^max-net nil ^min-net nil)
  6596. )
  6597.  
  6598. (p p572
  6599.     { <next> (next-segment <nn> row <gy>) }
  6600.     (ff ^net-name <nn> ^grid-y <gy> ^pin-name <pn> ^came-from north)
  6601.     (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <np> ^no-of-bottom-pins <garb1>)
  6602.   - (ff ^net-name <nn> ^grid-y < <gy>)
  6603.     { <ff> (ff ^net-name <nn> ^grid-y { <gy2> > <gy> } ^pin-name <pn2> ^grid-x <gx> ^grid-layer <lay> ^came-from north) }
  6604.     { <v1> (vertical ^net-name nil ^min { <min> <= <gy> } ^max { > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>) }
  6605.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  6606.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com { < <gy2> >= <gy> } ^layer <lay>)
  6607.   -->
  6608.     (make vertical ^net-name nil ^max <gy> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
  6609.     (modify <v1> ^min <gy2> ^min-net <nn>)
  6610.     (make vertical ^net-name <nn> ^max <gy2> ^min <gy> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn2>)
  6611.     (modify <ff> ^grid-y <gy> ^can-chng-layer nil)
  6612.     (modify <next> ^5 useless)
  6613. )
  6614.  
  6615. (p p573
  6616.     { <next> (next-segment <nn> row <gy>) }
  6617.     (ff ^came-from south ^net-name <nn> ^grid-y <gy> ^pin-name <pn>)
  6618.     (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <garb1> ^no-of-bottom-pins <np>)
  6619.   - (ff ^net-name <nn> ^grid-y > <gy>)
  6620.     { <ff> (ff ^net-name <nn> ^grid-y { <gy2> < <gy> } ^pin-name <pn2> ^grid-x <gx> ^grid-layer <lay> ^came-from south) }
  6621.     { <v1> (vertical ^net-name nil ^max { <max> >= <gy> } ^min { < <max> <= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  6622.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  6623.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com { > <gy2> <= <gy> } ^layer <lay>)
  6624.   -->
  6625.     (make vertical ^net-name nil ^max <max> ^min <gy> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <nn> ^max-net <mn>)
  6626.     (modify <v1> ^max <gy2> ^max-net <nn>)
  6627.     (make vertical ^net-name <nn> ^max <gy> ^min <gy2> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn2>)
  6628.     (modify <ff> ^grid-y <gy> ^can-chng-layer nil)
  6629.     (modify <v1> ^5 useless)
  6630. )
  6631.  
  6632. (p p574
  6633.     (next-segment <nn> row <gy> <gg1> <nmin> <nmax>)
  6634.     (ff ^net-name <nn> ^grid-y { <gy2> > <gy> } ^grid-x { <gx> >= <nmin> <= <nmax> } ^grid-layer <lay> ^pin-name <pn>)
  6635.     (vertical ^net-name nil ^min { <min> <= <gy> } ^max { > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>)
  6636.     (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy2> ^com <gx>)
  6637.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^com <gx>)
  6638.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6639.   -->
  6640.     (make vertical ^net-name nil ^max <gy> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
  6641.     (modify 3 ^min <gy2> ^min-net <nn>)
  6642.     (make vertical ^net-name <nn> ^max <gy2> ^min <gy> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  6643.     (modify 2 ^grid-y <gy> ^can-chng-layer nil)
  6644.     (modify 1 ^2 <nn>)
  6645. )
  6646.  
  6647. (p p575
  6648.     (next-segment <nn> row <gy> <gg1> <nmin> <nmax>)
  6649.     (vertical ^net-name { <nn> <> nil } ^min { <gy2> > <gy> } ^com { <gx> >= <nmin> <= <nmax> } ^layer <lay> ^pin-name <pn>)
  6650.     (vertical ^net-name nil ^min { < <gy2> <= <gy> } ^max <gy2> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  6651.     (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy2> ^com <gx>)
  6652.   - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2>)
  6653.   - (vertical ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy2> ^com <gx>)
  6654.   - (ff ^net-name <> <nn> ^grid-x <gx>)
  6655.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^com <gx>)
  6656.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6657.   -->
  6658.     (modify 3 ^max <gy> ^max-net <nn>)
  6659.     (modify 2 ^min <gy>)
  6660.     (make ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
  6661.     (modify 1 ^2 <nn>)
  6662. )
  6663.  
  6664. (p p576
  6665.     (next-segment <nn> row <gy> <gg1> <nmin> <nmax>)
  6666.     (ff ^net-name <nn> ^grid-y { <gy2> < <gy> } ^grid-x { <gx> >= <nmin> <= <nmax> } ^grid-layer <lay> ^pin-name <pn>)
  6667.     (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { > <min> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>)
  6668.     (vertical-s ^net-name <nn> ^min <= <gy2> ^max >= <gy> ^com <gx>)
  6669.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^com <gx>)
  6670.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6671.   -->
  6672.     (make vertical ^net-name nil ^max <gy2> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
  6673.     (modify 3 ^min <gy> ^min-net <nn>)
  6674.     (make vertical ^net-name <nn> ^max <gy> ^min <gy2> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  6675.     (modify 2 ^grid-y <gy> ^can-chng-layer nil)
  6676.     (modify 1 ^2 <nn>)
  6677. )
  6678.  
  6679. (p p577
  6680.     (next-segment <nn> row <gy> <gg1> <nmin> <nmax>)
  6681.     (vertical ^net-name { <nn> <> nil } ^min { <gy2> < <gy> } ^com { <gx> >= <nmin> <= <nmax> } ^layer <lay> ^pin-name <pn>)
  6682.     (vertical ^net-name nil ^min <gy2> ^max { > <gy2> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  6683.     (vertical-s ^net-name <nn> ^min <= <gy2> ^max >= <gy> ^com <gx>)
  6684.   - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2>)
  6685.   - (vertical ^net-name { <nn> <> nil } ^min <= <gy2> ^max >= <gy> ^com <gx>)
  6686.   - (ff ^net-name <> <nn> ^grid-x <gx>)
  6687.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^com <gx>)
  6688.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  6689.   -->
  6690.     (modify 3 ^min <gy> ^min-net <nn>)
  6691.     (modify 2 ^max <gy>)
  6692.     (make ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from south)
  6693.     (modify 1 ^2 <nn>)
  6694. )
  6695.  
  6696. (p p578
  6697.     (next-segment <nn>)
  6698.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <garb2>)
  6699.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <garb3> ^compo <garb4> ^commo <garb5>)
  6700.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <garb6> ^compo <garb7> ^commo <garb8>)
  6701.   -->
  6702.     (remove 2)
  6703. )
  6704.  
  6705. (p p579
  6706.     (next-segment <nn>)
  6707.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <garb2>)
  6708.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <gx> ^max <gx> ^com <gy>)
  6709.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <gx> ^max > <gx> ^com <gy>)
  6710.   -->
  6711.     (remove 2)
  6712. )
  6713.  
  6714. (p p580
  6715.     (change-priority)
  6716.     { <n> (next-segment ^5 useless) }
  6717.   -->
  6718.     (modify <n> ^5 nil)
  6719. )
  6720.  
  6721. (p p581
  6722.     (change-priority)
  6723.     { <n> (next-segment <nn> col <x> useless <min> <max>) }
  6724.     (vertical-s ^net-name <nn> ^com <x> ^sum 2 ^difference 0)
  6725.     (last-row <lr>)
  6726.   -->
  6727.     (modify <n> ^5 nil 1 <lr>)
  6728. )
  6729.  
  6730. (p p582
  6731.     (change-priority)
  6732.     { <n> (next-segment <nn> row <y> useless <min> <max>) }
  6733.     (horizontal-s ^net-name <nn> ^com <x> ^sum 2 ^difference 0)
  6734.     (last-col <lc>)
  6735.   -->
  6736.     (modify <n> ^5 nil 1 <lc>)
  6737. )
  6738.  
  6739. (p p583
  6740.     { <n> (next-segment <nn> <rc> <xy> nil) }
  6741.   - (next-segment ^5 <> nil)
  6742.   -->
  6743.     (remove <n>)
  6744.     (make move-ff <nn> <rc> <xy>)
  6745. )
  6746.  
  6747. (p p584
  6748.     { <c> (change-priority) }
  6749.   -->
  6750.     (remove <c>)
  6751.     (make end-of-specialized-move-ff)
  6752. )
  6753.  
  6754. (p p585
  6755.     (move-ff <nn> row <xy>)
  6756.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <xy> ^layer <lay> ^compo <cpo> ^commo <garb1>)
  6757.     { <ff> (ff ^came-from south ^net-name { <nn1> <> <nn> } ^grid-x { <gx> >= <min> <= <max> } ^grid-y <xy> ^grid-layer { <flay> <> <lay> }) }
  6758.     { <v1> (vertical ^status nil ^net-name <nn1> ^min < <xy> ^max <xy> ^com <gx> ^layer <flay>) }
  6759.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <gx> ^com <xy> ^layer <flay>)
  6760.     { <v2> (vertical ^net-name nil ^min <xy> ^max { <garb4> > <xy> } ^com <gx> ^layer <flay> ^compo <garb2> ^commo <garb3>) }
  6761.   -->
  6762.     (modify <v2> ^min <cpo> ^min-net <nn1>)
  6763.     (modify <v1> ^max <cpo>)
  6764.     (modify <ff> ^grid-y <cpo> ^can-chng-layer nil)
  6765. )
  6766.  
  6767. (p p586
  6768.     (move-ff <nn> row <xy>)
  6769.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <xy> ^layer <lay> ^compo <garb1> ^commo <cmo>)
  6770.     { <ff> (ff ^came-from north ^net-name { <nn1> <> <nn> } ^grid-x { <gx> >= <min> <= <max> } ^grid-y <xy> ^grid-layer { <flay> <> <lay> }) }
  6771.     { <v1> (vertical ^status nil ^net-name <nn1> ^min <xy> ^max > <xy> ^com <gx> ^layer <flay>) }
  6772.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <gx> ^com <xy> ^layer <flay>)
  6773.     { <v2> (vertical ^net-name nil ^min <vmin> ^max { <xy> > <vmin> } ^com <gx> ^layer <flay> ^compo <garb2> ^commo <garb3>) }
  6774.   -->
  6775.     (modify <v2> ^max <cmo> ^max-net <nn1>)
  6776.     (modify <v1> ^min <cmo>)
  6777.     (modify <ff> ^grid-y <cmo> ^can-chng-layer nil)
  6778. )
  6779.  
  6780. (p p587
  6781.     (move-ff <nn>)
  6782.     (horizontal ^net-name <nn> ^min <min> ^max <max>)
  6783.     { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max>) }
  6784.   -->
  6785.     (remove <h>)
  6786. )
  6787.  
  6788. (p p588
  6789.     (move-ff <nn>)
  6790.     (vertical ^net-name <nn> ^min <min> ^max <max>)
  6791.     { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max>) }
  6792.   -->
  6793.     (remove <v>)
  6794. )
  6795.  
  6796. (p p589
  6797.     (move-ff <nn>)
  6798.     (horizontal ^net-name <nn> ^min <min> ^max <max> ^com <com>)
  6799.     (ff ^net-name <nn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y { <gy> < <com> })
  6800.     { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max { <vmax> >= <com> } ^com <gx> ^id <id>) }
  6801.     (vertical ^net-name nil ^min <= <gy> ^max >= <com> ^com <gx>)
  6802.   - (vertical-s ^net-name <> <nn> ^com <gx>)
  6803.   -->
  6804.     (remove <v>)
  6805.     (make next-segment <nn> col <gx> nil <vmin> <vmax>)
  6806. )
  6807.  
  6808. (p p590
  6809.     (move-ff <nn>)
  6810.     (horizontal ^net-name <nn> ^min <min> ^max <max> ^com <com>)
  6811.     (ff ^net-name <nn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y { <gy> > <com> })
  6812.     { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <com> } ^max { <vmax> >= <gy> } ^com <gx> ^id <id>) }
  6813.     (vertical ^net-name nil ^min <= <com> ^max >= <gy> ^com <gx>)
  6814.   - (vertical-s ^net-name <> <nn> ^com <gx>)
  6815.   -->
  6816.     (remove <v>)
  6817.     (make next-segment <nn> col <gx> nil <vmin> <vmax>)
  6818. )
  6819.  
  6820. (p p591
  6821.     (move-ff <nn>)
  6822.     (horizontal ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
  6823.     (horizontal ^net-name <nn> ^min { <hmin2> >= <hmin1> } ^max { <hmax2> <= <hmax1> } ^com { <hcom2> < <hcom1> })
  6824.     { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <hcom2> } ^max { <vmax> >= <hcom1> } ^com { <vcom> >= <hmin2> <= <hmax2> } ^id <id>) }
  6825.     (vertical ^net-name nil ^min <= <hcom2> ^max >= <hcom1> ^com { <vcom2> >= <hmin2> <= <hmax2> })
  6826.   - (vertical-s ^net-name <> <nn> ^com <vcom2>)
  6827.   -->
  6828.     (remove <v>)
  6829.     (make next-segment <nn> col <vcom2> nil <vmin> <vmax>)
  6830. )
  6831.  
  6832. (p p592
  6833.     (move-ff <nn>)
  6834.     (horizontal ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
  6835.     (horizontal ^net-name <nn> ^min { <hmin2> >= <hmin1> } ^max { <hmax2> <= <hmax1> } ^com { <hcom2> > <hcom1> })
  6836.     { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <hcom1> } ^max { <vmax> >= <hcom2> } ^com { <vcom> >= <hmin2> <= <hmax2> } ^id <id>) }
  6837.     (vertical ^net-name nil ^min <= <hcom1> ^max >= <hcom2> ^com { <vcom2> >= <hmin2> <= <hmax2> })
  6838.   - (vertical-s ^net-name <> <nn> ^com <vcom2>)
  6839.   -->
  6840.     (remove <v>)
  6841.     (make next-segment <nn> col <vcom2> nil <vmin> <vmax>)
  6842. )
  6843.  
  6844. (p p593
  6845.     (move-ff <nn>)
  6846.     (horizontal ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
  6847.     (horizontal ^net-name <nn> ^min { <hmin2> >= <hmin1> <= <hmax1> } ^max { <hmax2> >= <hmax1> } ^com { <hcom2> < <hcom1> })
  6848.     { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <hcom2> } ^max { <vmax> >= <hcom1> } ^com { <vcom> >= <hmin2> <= <hmax1> } ^id <id>) }
  6849.     (vertical ^net-name nil ^min <= <hcom2> ^max >= <hcom1> ^com { <vcom2> >= <hmin2> <= <hmax1> })
  6850.   - (vertical-s ^net-name <> <nn> ^com <vcom2>)
  6851.   -->
  6852.     (remove <v>)
  6853.     (make next-segment <nn> col <vcom2> nil <vmin> <vmax>)
  6854. )
  6855.  
  6856. (p p594
  6857.     (move-ff <nn>)
  6858.     (horizontal ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
  6859.     (horizontal ^net-name <nn> ^min { <hmin2> >= <hmin1> <= <hmax1> } ^max { <hmax2> >= <hmax1> } ^com { <hcom2> > <hcom1> })
  6860.     { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <hcom1> } ^max { <vmax> >= <hcom2> } ^com { <vcom> >= <hmin2> <= <hmax1> } ^id <id>) }
  6861.     (vertical ^net-name nil ^min <= <hcom1> ^max >= <hcom2> ^com { <vcom2> >= <hmin2> <= <hmax1> })
  6862.   - (vertical-s ^net-name <> <nn> ^com <vcom2>)
  6863.   -->
  6864.     (remove <v>)
  6865.     (make next-segment <nn> col <vcom2> nil <vmin> <vmax>)
  6866. )
  6867.  
  6868. (p p595
  6869.     (move-ff <nn>)
  6870.     (vertical ^net-name <nn> ^min <min> ^max <max> ^com <com>)
  6871.     (ff ^net-name <nn> ^grid-x { <gx> < <com> } ^grid-y { <gy> >= <min> <= <max> })
  6872.     { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <gx> } ^max { <vmax> >= <com> } ^com <gy> ^id <id>) }
  6873.     (horizontal ^net-name nil ^min <= <gx> ^max >= <com> ^com <gy>)
  6874.   - (horizontal-s ^net-name <> <nn> ^com <gy>)
  6875.   -->
  6876.     (remove <v>)
  6877.     (make next-segment <nn> row <gy> nil <vmin> <vmax>)
  6878. )
  6879.  
  6880. (p p596
  6881.     (move-ff <nn>)
  6882.     (vertical ^net-name <nn> ^min <min> ^max <max> ^com <com>)
  6883.     (ff ^net-name <nn> ^grid-x { <gx> > <com> } ^grid-y { <gy> >= <min> <= <max> })
  6884.     { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <com> } ^max { <vmax> >= <gx> } ^com <gy> ^id <id>) }
  6885.     (horizontal ^net-name nil ^min <= <com> ^max >= <gx> ^com <gy>)
  6886.   - (horizontal-s ^net-name <> <nn> ^com <gy>)
  6887.   -->
  6888.     (remove <v>)
  6889.     (make next-segment <nn> row <gy> nil <vmin> <vmax>)
  6890. )
  6891.  
  6892. (p p597
  6893.     (move-ff <nn>)
  6894.     (vertical ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
  6895.     (vertical ^net-name <nn> ^min { <hmin2> >= <hmin1> } ^max { <hmax2> <= <hmax1> } ^com { <hcom2> < <hcom1> })
  6896.     { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <hcom2> } ^max { <vmax> >= <hcom1> } ^com { <vcom> >= <hmin2> <= <hmax2> } ^id <id>) }
  6897.     (horizontal ^net-name nil ^min <= <hcom2> ^max >= <hcom1> ^com { <vcom2> >= <hmin2> <= <hmax2> })
  6898.   - (horizontal-s ^net-name <> <nn> ^com <vcom2>)
  6899.   -->
  6900.     (remove <v>)
  6901.     (make next-segment <nn> row <vcom2> nil <vmin> <vmax>)
  6902. )
  6903.  
  6904. (p p598
  6905.     (move-ff <nn>)
  6906.     (vertical ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
  6907.     (vertical ^net-name <nn> ^min { <hmin2> >= <hmin1> } ^max { <hmax2> <= <hmax1> } ^com { <hcom2> > <hcom1> })
  6908.     { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <hcom1> } ^max { <vmax> >= <hcom2> } ^com { <vcom> >= <hmin2> <= <hmax2> } ^id <id>) }
  6909.     (horizontal ^net-name nil ^min <= <hcom1> ^max >= <hcom2> ^com { <vcom2> >= <hmin2> <= <hmax2> })
  6910.   - (horizontal-s ^net-name <> <nn> ^com <vcom2>)
  6911.   -->
  6912.     (remove <v>)
  6913.     (make next-segment <nn> row <vcom2> nil <vmin> <vmax>)
  6914. )
  6915.  
  6916. (p p599
  6917.     (move-ff <nn>)
  6918.     (vertical ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
  6919.     (vertical ^net-name <nn> ^min { <hmin2> >= <hmin1> <= <hmax1> } ^max { <hmax2> >= <hmax1> } ^com { <hcom2> < <hcom1> })
  6920.     { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <hcom2> } ^max { <vmax> >= <hcom1> } ^com { <vcom> >= <hmin2> <= <hmax1> } ^id <id>) }
  6921.     (horizontal ^net-name nil ^min <= <hcom2> ^max >= <hcom1> ^com { <vcom2> >= <hmin2> <= <hmax1> })
  6922.   - (horizontal-s ^net-name <> <nn> ^com <vcom2>)
  6923.   -->
  6924.     (remove <v>)
  6925.     (make next-segment <nn> row <vcom2> nil <vmin> <vmax>)
  6926. )
  6927.  
  6928. (p p600
  6929.     (move-ff <nn>)
  6930.     (vertical ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
  6931.     (vertical ^net-name <nn> ^min { <hmin2> >= <hmin1> <= <hmax1> } ^max { <hmax2> >= <hmax1> } ^com { <hcom2> > <hcom1> })
  6932.     { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <hcom1> } ^max { <vmax> >= <hcom2> } ^com { <vcom> >= <hmin2> <= <hmax1> } ^id <id>) }
  6933.     (horizontal ^net-name nil ^min <= <hcom1> ^max >= <hcom2> ^com { <vcom2> >= <hmin2> <= <hmax1> })
  6934.   - (horizontal-s ^net-name <> <nn> ^com <vcom2>)
  6935.   -->
  6936.     (remove <v>)
  6937.     (make next-segment <nn> row <vcom2> nil <vmin> <vmax>)
  6938. )
  6939.  
  6940. (p p601
  6941.     { <m> (move-ff) }
  6942.   -->
  6943.     (remove <m>)
  6944. )
  6945.  
  6946. (p p602
  6947.     { <e> (end-of-specialized-move-ff) }
  6948.   - (next-segment)
  6949.   -->
  6950.     (remove <e>)
  6951.     (make context ^present check-for-routed-net)
  6952. )
  6953.  
  6954. (p p603
  6955.     (context ^present << check-for-routed-net propagate-constraint >>)
  6956.     (<< dominant-layer change-priority next-segment >>)
  6957.   -->
  6958.     (remove 2)
  6959. )
  6960.  
  6961. (p p244
  6962.     (context ^present lshape1)
  6963.     (<< total-verti counted-verti total counted >>)
  6964.   -->
  6965.     (remove 2)
  6966. )
  6967.  
  6968. (p p245
  6969.     (context ^present lshape1)
  6970.     (last-row <gy>)
  6971.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
  6972.   - (ff ^net-name <nn> ^grid-y <gy> ^pin-name <> <pn>)
  6973.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y <gy2>)
  6974.   - (vertical ^com { > <gx> < <gx2> })
  6975.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy> ^layer <lay> ^commo <hcmo> ^compo <hcpo> ^min-net <mn>)
  6976.   - (pin ^pin-x <gx2> ^pin-y <hcpo>)
  6977.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6978.   - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6979.   -->
  6980.     (make horizontal ^layer <lay> ^min <hmin> ^max <gx> ^min-net <mn> ^max-net <nn> ^com <gy> ^commo <hcmo> ^compo <hcpo>)
  6981.     (modify 5 ^min <gx2> ^min-net <nn>)
  6982.     (make horizontal ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gx> ^max <gx2> ^com <gy> ^commo <hcmo> ^compo <hcpo>)
  6983.     (modify 3 ^grid-x <gx2> ^came-from west)
  6984. )
  6985.  
  6986. (p p246
  6987.     (context ^present lshape1)
  6988.     (last-row <gy>)
  6989.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
  6990.   - (ff ^net-name <nn> ^grid-y <gy> ^pin-name <> <pn>)
  6991.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx> } ^grid-y <gy2>)
  6992.   - (vertical ^com { > <gx2> < <gx> })
  6993.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  6994.   - (pin ^pin-x <gx2> ^pin-y <hcpo>)
  6995.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  6996.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  6997.   -->
  6998.     (make horizontal ^layer <lay> ^min <hmin> ^max <gx2> ^min-net <mn> ^max-net <nn> ^com <gy> ^commo <hcmo> ^compo <hcpo>)
  6999.     (modify 5 ^min <gx> ^min-net <nn>)
  7000.     (make horizontal ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gx2> ^max <gx> ^com <gy> ^commo <hcmo> ^compo <hcpo>)
  7001.     (modify 3 ^grid-x <gx2> ^came-from east)
  7002. )
  7003.  
  7004. (p p247
  7005.     (context ^present lshape1)
  7006.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y 1 ^grid-layer <lay> ^pin-name <pn> ^came-from south)
  7007.   - (ff ^net-name <nn> ^grid-y 1 ^pin-name <> <pn>)
  7008.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y <gy2>)
  7009.   - (vertical ^com { > <gx> < <gx2> })
  7010.     (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> > <hmin> >= <gx2> } ^com 1 ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  7011.   - (pin ^pin-x <gx2> ^pin-y 0)
  7012.   - (vertical ^net-name { <> <nn> <> nil } ^min <= 1 ^max >= 1 ^com <gx2> ^layer <lay>)
  7013.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com 1 ^layer <lay>)
  7014.   -->
  7015.     (make horizontal ^layer <lay> ^min <hmin> ^max <gx> ^min-net <mn> ^max-net <nn> ^com 1 ^commo <hcmo> ^compo <hcpo>)
  7016.     (modify 4 ^min <gx2> ^min-net <nn>)
  7017.     (make horizontal ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gx> ^max <gx2> ^com 1 ^commo <hcmo> ^compo <hcpo>)
  7018.     (modify 2 ^grid-x <gx2> ^came-from west)
  7019. )
  7020.  
  7021. (p p248
  7022.     (context ^present lshape1)
  7023.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y 1 ^grid-layer <lay> ^pin-name <pn> ^came-from south)
  7024.   - (ff ^net-name <nn> ^grid-y 1 ^pin-name <> <pn>)
  7025.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx> } ^grid-y <gy2>)
  7026.   - (vertical ^com { > <gx2> < <gx> })
  7027.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx> } ^com 1 ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  7028.   - (pin ^pin-x <gx2> ^pin-y 0)
  7029.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= 1 ^max >= 1 ^com <gx2> ^layer <lay>)
  7030.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com 1 ^layer <lay>)
  7031.   -->
  7032.     (make horizontal ^layer <lay> ^min <hmin> ^max <gx2> ^min-net <mn> ^max-net <nn> ^com 1 ^commo <hcmo> ^compo <hcpo>)
  7033.     (modify 4 ^min <gx> ^min-net <nn>)
  7034.     (make horizontal ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gx2> ^max <gx> ^com 1 ^commo <hcmo> ^compo <hcpo>)
  7035.     (modify 2 ^grid-x <gx2> ^came-from east)
  7036. )
  7037.  
  7038. (p p249
  7039.     (context ^present lshape1)
  7040.     (last-col <gx>)
  7041.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from east)
  7042.   - (ff ^net-name <nn> ^grid-x <gx> ^pin-name <> <pn>)
  7043.     (ff ^net-name <nn> ^grid-x <gx2> ^grid-y { <gy2> > <gy> })
  7044.   - (horizontal ^com { > <gy> < <gy2> })
  7045.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy2> > <vmin> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  7046.   - (pin ^pin-x <vcpo> ^pin-y <gy2>)
  7047.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  7048.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  7049.   -->
  7050.     (make vertical ^layer <lay> ^min <vmin> ^max <gy> ^min-net <mn> ^max-net <nn> ^com <gx> ^commo <vcmo> ^compo <vcpo>)
  7051.     (modify 5 ^min <gy2> ^min-net <nn>)
  7052.     (make vertical ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gy> ^max <gy2> ^com <gx> ^commo <vcmo> ^compo <vcpo>)
  7053.     (modify 3 ^grid-y <gy2> ^came-from south)
  7054. )
  7055.  
  7056. (p p250
  7057.     (context ^present lshape1)
  7058.     (last-col <gx>)
  7059.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from east)
  7060.   - (ff ^net-name <nn> ^grid-x <gx> ^pin-name <> <pn>)
  7061.     (ff ^net-name <nn> ^grid-x <gx2> ^grid-y { <gy2> < <gy> })
  7062.   - (horizontal ^com { > <gy2> < <gy> })
  7063.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> >= <gy> > <vmin> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  7064.   - (pin ^pin-x <vcpo> ^pin-y <gy2>)
  7065.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  7066.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  7067.   -->
  7068.     (make vertical ^layer <lay> ^min <vmin> ^max <gy2> ^min-net <mn> ^max-net <nn> ^com <gx> ^commo <vcmo> ^compo <vcpo>)
  7069.     (modify 5 ^min <gy> ^min-net <nn>)
  7070.     (make vertical ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gy2> ^max <gy> ^com <gx> ^commo <vcmo> ^compo <vcpo>)
  7071.     (modify 3 ^grid-y <gy2> ^came-from north)
  7072. )
  7073.  
  7074. (p p251
  7075.     (context ^present lshape1)
  7076.     (ff ^net-name <nn> ^grid-x 1 ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from west)
  7077.   - (ff ^net-name <nn> ^grid-x 1 ^pin-name <> <pn>)
  7078.     (ff ^net-name <nn> ^grid-x <gx2> ^grid-y { <gy2> > <gy> })
  7079.   - (horizontal ^com { > <gy> < <gy2> })
  7080.     (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { <vmax> > <vmin> >= <gy2> } ^com 1 ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  7081.   - (pin ^pin-x 0 ^pin-y <gy2>)
  7082.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= 1 ^max >= 1 ^com <gy2> ^layer <lay>)
  7083.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com 1 ^layer <lay>)
  7084.   -->
  7085.     (make vertical ^layer <lay> ^min <vmin> ^max <gy> ^min-net <mn> ^max-net <nn> ^com 1 ^commo <vcmo> ^compo <vcpo>)
  7086.     (modify 4 ^min <gy2> ^min-net <nn>)
  7087.     (make vertical ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gy> ^max <gy2> ^com 1 ^commo <vcmo> ^compo <vcpo>)
  7088.     (modify 2 ^grid-y <gy2> ^came-from south)
  7089. )
  7090.  
  7091. (p p252
  7092.     (context ^present lshape1)
  7093.     (ff ^net-name <nn> ^grid-x 1 ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from west)
  7094.   - (ff ^net-name <nn> ^grid-x 1 ^pin-name <> <pn>)
  7095.     (ff ^net-name <nn> ^grid-x <gx2> ^grid-y { <gy2> < <gy> })
  7096.   - (horizontal ^com { > <gy2> < <gy> })
  7097.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy> } ^com 1 ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  7098.   - (pin ^pin-x 0 ^pin-y <gy2>)
  7099.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= 1 ^max >= 1 ^com <gy2> ^layer <lay>)
  7100.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com 1 ^layer <lay>)
  7101.   -->
  7102.     (make vertical ^layer <lay> ^min <vmin> ^max <gy2> ^min-net <mn> ^max-net <nn> ^com 1 ^commo <vcmo> ^compo <vcpo>)
  7103.     (modify 4 ^min <gy> ^min-net <nn>)
  7104.     (make vertical ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gy2> ^max <gy> ^com 1 ^commo <vcmo> ^compo <vcpo>)
  7105.     (modify 2 ^grid-y <gy2> ^came-from north)
  7106. )
  7107.  
  7108. (p p253
  7109.     (context ^present lshape1)
  7110.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7111.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7112.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7113.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> >= <gy1> > <vmin> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7114.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> >= <gx2> > <hmin> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7115.     (vertical-layer <vlay>)
  7116.     (horizontal-layer <hlay>)
  7117.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7118.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7119.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7120.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7121.   -->
  7122.     (remove 1 3 4)
  7123.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7124.     (modify 5 ^min <gy1> ^min-net <nn>)
  7125.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7126.     (modify 6 ^min <gx2> ^min-net <nn>)
  7127.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7128.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7129.     (make context ^present check-for-routed-net)
  7130. )
  7131.  
  7132. (p p254
  7133.     (context ^present lshape1)
  7134.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7135.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7136.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7137.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7138.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7139.     (vertical-layer <vlay>)
  7140.     (horizontal-layer <hlay>)
  7141.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7142.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7143.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7144.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7145.   -->
  7146.     (remove 1 3 4)
  7147.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7148.     (modify 5 ^min <gy1> ^min-net <nn>)
  7149.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7150.     (modify 6 ^min <gx1> ^min-net <nn>)
  7151.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7152.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7153.     (make context ^present check-for-routed-net)
  7154. )
  7155.  
  7156. (p p255
  7157.     (context ^present lshape1)
  7158.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7159.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7160.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
  7161.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7162.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7163.     (vertical-layer <vlay>)
  7164.     (horizontal-layer <hlay>)
  7165.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7166.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7167.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7168.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7169.   -->
  7170.     (remove 1 3 4)
  7171.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7172.     (modify 5 ^min <gy2> ^min-net <nn>)
  7173.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7174.     (modify 6 ^min <gx2> ^min-net <nn>)
  7175.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7176.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7177.     (make context ^present check-for-routed-net)
  7178. )
  7179.  
  7180. (p p256
  7181.     (context ^present lshape1)
  7182.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7183.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
  7184.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
  7185.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7186.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7187.     (vertical-layer <vlay>)
  7188.     (horizontal-layer <hlay>)
  7189.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx2>)
  7190.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx2>)
  7191.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy1>)
  7192.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy1>)
  7193.   -->
  7194.     (remove 1 3 4)
  7195.     (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7196.     (modify 5 ^min <gy1> ^min-net <nn>)
  7197.     (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7198.     (modify 6 ^min <gx2> ^min-net <nn>)
  7199.     (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7200.     (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7201.     (make context ^present check-for-routed-net)
  7202. )
  7203.  
  7204. (p p257
  7205.     (context ^present lshape1)
  7206.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7207.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7208.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7209.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7210.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7211.     (vertical-layer <vlay>)
  7212.     (horizontal-layer <hlay>)
  7213.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7214.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7215.     (ff ^net-name { <nn1> <> <nn> } ^grid-y <gy2> ^grid-x < <gx1>)
  7216.   - (pin ^net-name <nn1> ^pin-x >= <gx1>)
  7217.   -->
  7218.     (remove 1 3 4)
  7219.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7220.     (modify 5 ^min <gy1> ^min-net <nn>)
  7221.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7222.     (modify 6 ^min <gx2> ^min-net <nn>)
  7223.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7224.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7225.     (make context ^present check-for-routed-net)
  7226. )
  7227.  
  7228. (p p258
  7229.     (context ^present lshape1)
  7230.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7231.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7232.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7233.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7234.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7235.     (vertical-layer <vlay>)
  7236.     (horizontal-layer <hlay>)
  7237.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7238.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7239.     (ff ^net-name { <nn1> <> <nn> } ^grid-y <gy2> ^grid-x > <gx1>)
  7240.   - (pin ^net-name <nn1> ^pin-x <= <gx1>)
  7241.   -->
  7242.     (remove 1 3 4)
  7243.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7244.     (modify 5 ^min <gy1> ^min-net <nn>)
  7245.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7246.     (modify 6 ^min <gx1> ^min-net <nn>)
  7247.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7248.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7249.     (make context ^present check-for-routed-net)
  7250. )
  7251.  
  7252. (p p259
  7253.     (context ^present lshape1)
  7254.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7255.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7256.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
  7257.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7258.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7259.     (vertical-layer <vlay>)
  7260.     (horizontal-layer <hlay>)
  7261.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7262.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7263.     (ff ^net-name { <nn1> <> <nn> } ^grid-y <gy2> ^grid-x < <gx1>)
  7264.   - (pin ^net-name <nn1> ^pin-x >= <gx1>)
  7265.   -->
  7266.     (remove 1 3 4)
  7267.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7268.     (modify 5 ^min <gy2> ^min-net <nn>)
  7269.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7270.     (modify 6 ^min <gx2> ^min-net <nn>)
  7271.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7272.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7273.     (make context ^present check-for-routed-net)
  7274. )
  7275.  
  7276. (p p260
  7277.     (context ^present lshape1)
  7278.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7279.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
  7280.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
  7281.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7282.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7283.     (vertical-layer <vlay>)
  7284.     (horizontal-layer <hlay>)
  7285.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx2>)
  7286.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx2>)
  7287.     (ff ^net-name { <nn1> <> <nn> } ^grid-y <gy1> ^grid-x > <gx2>)
  7288.   - (pin ^net-name <nn1> ^pin-x <= <gx2>)
  7289.   -->
  7290.     (remove 1 3 4)
  7291.     (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7292.     (modify 5 ^min <gy1> ^min-net <nn>)
  7293.     (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7294.     (modify 6 ^min <gx2> ^min-net <nn>)
  7295.     (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7296.     (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7297.     (make context ^present check-for-routed-net)
  7298. )
  7299.  
  7300. (p p261
  7301.     (context ^present lshape1)
  7302.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7303.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7304.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7305.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7306.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7307.     (vertical-layer <vlay>)
  7308.     (horizontal-layer <hlay>)
  7309.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7310.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7311.     (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y < <gy2>)
  7312.   - (pin ^net-name <nn1> ^pin-y >= <gy2>)
  7313.   -->
  7314.     (remove 1 3 4)
  7315.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7316.     (modify 5 ^min <gy1> ^min-net <nn>)
  7317.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7318.     (modify 6 ^min <gx2> ^min-net <nn>)
  7319.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7320.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7321.     (make context ^present check-for-routed-net)
  7322. )
  7323.  
  7324. (p p262
  7325.     (context ^present lshape1)
  7326.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7327.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7328.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7329.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7330.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7331.     (vertical-layer <vlay>)
  7332.     (horizontal-layer <hlay>)
  7333.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7334.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7335.     (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y < <gy2>)
  7336.   - (pin ^net-name <nn1> ^pin-y >= <gy2>)
  7337.   -->
  7338.     (remove 1 3 4)
  7339.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7340.     (modify 5 ^min <gy1> ^min-net <nn>)
  7341.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7342.     (modify 6 ^min <gx1> ^min-net <nn>)
  7343.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7344.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7345.     (make context ^present check-for-routed-net)
  7346. )
  7347.  
  7348. (p p263
  7349.     (context ^present lshape1)
  7350.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7351.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7352.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
  7353.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7354.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7355.     (vertical-layer <vlay>)
  7356.     (horizontal-layer <hlay>)
  7357.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7358.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7359.     (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y > <gy2>)
  7360.   - (pin ^net-name <nn1> ^pin-y <= <gy2>)
  7361.   -->
  7362.     (remove 1 3 4)
  7363.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7364.     (modify 5 ^min <gy2> ^min-net <nn>)
  7365.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7366.     (modify 6 ^min <gx2> ^min-net <nn>)
  7367.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7368.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7369.     (make context ^present check-for-routed-net)
  7370. )
  7371.  
  7372. (p p264
  7373.     (context ^present lshape1)
  7374.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7375.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
  7376.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
  7377.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7378.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7379.     (vertical-layer <vlay>)
  7380.     (horizontal-layer <hlay>)
  7381.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy1>)
  7382.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy1>)
  7383.     (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx2> ^grid-y > <gy1>)
  7384.   - (pin ^net-name <nn1> ^pin-y <= <gy1>)
  7385.   -->
  7386.     (remove 1 3 4)
  7387.     (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7388.     (modify 5 ^min <gy1> ^min-net <nn>)
  7389.     (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7390.     (modify 6 ^min <gx2> ^min-net <nn>)
  7391.     (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7392.     (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7393.     (make context ^present check-for-routed-net)
  7394. )
  7395.  
  7396. (p p265
  7397.     (context ^present lshape1)
  7398.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7399.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7400.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7401.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7402.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7403.     (vertical-layer <vlay>)
  7404.     (horizontal-layer <hlay>)
  7405.     (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y < <gy2>)
  7406.   - (pin ^net-name <nn1> ^pin-y >= <gy2>)
  7407.     (ff ^net-name { <nn2> <> <nn> } ^grid-y <gy2> ^grid-x < <gx1>)
  7408.   - (pin ^net-name <nn2> ^pin-x >= <gx1>)
  7409.   -->
  7410.     (remove 1 3 4)
  7411.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7412.     (modify 5 ^min <gy1> ^min-net <nn>)
  7413.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7414.     (modify 6 ^min <gx2> ^min-net <nn>)
  7415.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7416.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7417.     (make context ^present check-for-routed-net)
  7418. )
  7419.  
  7420. (p p266
  7421.     (context ^present lshape1)
  7422.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7423.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7424.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7425.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7426.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7427.     (vertical-layer <vlay>)
  7428.     (horizontal-layer <hlay>)
  7429.     (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y < <gy2>)
  7430.   - (pin ^net-name <nn1> ^pin-y >= <gy2>)
  7431.     (ff ^net-name { <nn2> <> <nn> } ^grid-y <gy2> ^grid-x > <gx1>)
  7432.   - (pin ^net-name <nn2> ^pin-x <= <gx1>)
  7433.   -->
  7434.     (remove 1 3 4)
  7435.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7436.     (modify 5 ^min <gy1> ^min-net <nn>)
  7437.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7438.     (modify 6 ^min <gx1> ^min-net <nn>)
  7439.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7440.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7441.     (make context ^present check-for-routed-net)
  7442. )
  7443.  
  7444. (p p267
  7445.     (context ^present lshape1)
  7446.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7447.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7448.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
  7449.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7450.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7451.     (vertical-layer <vlay>)
  7452.     (horizontal-layer <hlay>)
  7453.     (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y > <gy2>)
  7454.   - (pin ^net-name <nn1> ^pin-y <= <gy2>)
  7455.     (ff ^net-name { <nn2> <> <nn> } ^grid-y <gy2> ^grid-x < <gx1>)
  7456.   - (pin ^net-name <nn2> ^pin-x >= <gx1>)
  7457.   -->
  7458.     (remove 1 3 4)
  7459.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7460.     (modify 5 ^min <gy2> ^min-net <nn>)
  7461.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7462.     (modify 6 ^min <gx2> ^min-net <nn>)
  7463.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7464.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7465.     (make context ^present check-for-routed-net)
  7466. )
  7467.  
  7468. (p p268
  7469.     (context ^present lshape1)
  7470.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7471.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
  7472.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
  7473.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7474.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7475.     (vertical-layer <vlay>)
  7476.     (horizontal-layer <hlay>)
  7477.     (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx2> ^grid-y > <gy1>)
  7478.   - (pin ^net-name <nn1> ^pin-y <= <gy1>)
  7479.     (ff ^net-name { <nn2> <> <nn> } ^grid-y <gy1> ^grid-x > <gx2>)
  7480.   - (pin ^net-name <nn2> ^pin-x <= <gx2>)
  7481.   -->
  7482.     (remove 1 3 4)
  7483.     (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7484.     (modify 5 ^min <gy1> ^min-net <nn>)
  7485.     (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7486.     (modify 6 ^min <gx2> ^min-net <nn>)
  7487.     (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7488.     (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7489.     (make context ^present check-for-routed-net)
  7490. )
  7491.  
  7492. (p p269
  7493.     (context ^present lshape2)
  7494.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7495.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7496.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7497.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7498.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7499.     (vertical-layer <vlay>)
  7500.     (horizontal-layer <hlay>)
  7501.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7502.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7503.   -->
  7504.     (remove 1 3 4)
  7505.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7506.     (modify 5 ^min <gy1> ^min-net <nn>)
  7507.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7508.     (modify 6 ^min <gx2> ^min-net <nn>)
  7509.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7510.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7511.     (make context ^present check-for-routed-net)
  7512. )
  7513.  
  7514. (p p270
  7515.     (context ^present lshape2)
  7516.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7517.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7518.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7519.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7520.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7521.     (vertical-layer <vlay>)
  7522.     (horizontal-layer <hlay>)
  7523.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7524.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7525.   -->
  7526.     (remove 1 3 4)
  7527.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7528.     (modify 5 ^min <gy1> ^min-net <nn>)
  7529.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7530.     (modify 6 ^min <gx1> ^min-net <nn>)
  7531.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7532.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7533.     (make context ^present check-for-routed-net)
  7534. )
  7535.  
  7536. (p p271
  7537.     (context ^present lshape2)
  7538.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7539.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7540.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
  7541.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7542.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7543.     (vertical-layer <vlay>)
  7544.     (horizontal-layer <hlay>)
  7545.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7546.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7547.   -->
  7548.     (remove 1 3 4)
  7549.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7550.     (modify 5 ^min <gy2> ^min-net <nn>)
  7551.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7552.     (modify 6 ^min <gx2> ^min-net <nn>)
  7553.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7554.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7555.     (make context ^present check-for-routed-net)
  7556. )
  7557.  
  7558. (p p272
  7559.     (context ^present lshape2)
  7560.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7561.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
  7562.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
  7563.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7564.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7565.     (vertical-layer <vlay>)
  7566.     (horizontal-layer <hlay>)
  7567.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx2>)
  7568.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx2>)
  7569.   -->
  7570.     (remove 1 3 4)
  7571.     (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7572.     (modify 5 ^min <gy1> ^min-net <nn>)
  7573.     (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7574.     (modify 6 ^min <gx2> ^min-net <nn>)
  7575.     (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7576.     (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7577.     (make context ^present check-for-routed-net)
  7578. )
  7579.  
  7580. (p p273
  7581.     (context ^present lshape2)
  7582.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7583.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7584.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7585.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7586.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7587.     (vertical-layer <vlay>)
  7588.     (horizontal-layer <hlay>)
  7589.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7590.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7591.   -->
  7592.     (remove 1 3 4)
  7593.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7594.     (modify 5 ^min <gy1> ^min-net <nn>)
  7595.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7596.     (modify 6 ^min <gx2> ^min-net <nn>)
  7597.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7598.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7599.     (make context ^present check-for-routed-net)
  7600. )
  7601.  
  7602. (p p274
  7603.     (context ^present lshape2)
  7604.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7605.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7606.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7607.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7608.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7609.     (vertical-layer <vlay>)
  7610.     (horizontal-layer <hlay>)
  7611.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7612.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7613.   -->
  7614.     (remove 1 3 4)
  7615.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7616.     (modify 5 ^min <gy1> ^min-net <nn>)
  7617.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7618.     (modify 6 ^min <gx1> ^min-net <nn>)
  7619.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7620.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7621.     (make context ^present check-for-routed-net)
  7622. )
  7623.  
  7624. (p p275
  7625.     (context ^present lshape2)
  7626.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7627.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7628.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
  7629.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7630.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7631.     (vertical-layer <vlay>)
  7632.     (horizontal-layer <hlay>)
  7633.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7634.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7635.   -->
  7636.     (remove 1 3 4)
  7637.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7638.     (modify 5 ^min <gy2> ^min-net <nn>)
  7639.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7640.     (modify 6 ^min <gx2> ^min-net <nn>)
  7641.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7642.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7643.     (make context ^present check-for-routed-net)
  7644. )
  7645.  
  7646. (p p276
  7647.     (context ^present lshape2)
  7648.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7649.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
  7650.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
  7651.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7652.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7653.     (vertical-layer <vlay>)
  7654.     (horizontal-layer <hlay>)
  7655.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy1>)
  7656.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy1>)
  7657.   -->
  7658.     (remove 1 3 4)
  7659.     (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7660.     (modify 5 ^min <gy1> ^min-net <nn>)
  7661.     (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7662.     (modify 6 ^min <gx2> ^min-net <nn>)
  7663.     (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7664.     (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7665.     (make context ^present check-for-routed-net)
  7666. )
  7667.  
  7668. (p p277
  7669.     (context ^present lshape3)
  7670.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7671.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7672.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7673.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7674.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7675.     (vertical-layer <vlay>)
  7676.     (horizontal-layer <hlay>)
  7677.   -->
  7678.     (remove 1 3 4)
  7679.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7680.     (modify 5 ^min <gy1> ^min-net <nn>)
  7681.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7682.     (modify 6 ^min <gx2> ^min-net <nn>)
  7683.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7684.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7685.     (make context ^present check-for-routed-net)
  7686. )
  7687.  
  7688. (p p278
  7689.     (context ^present lshape3)
  7690.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7691.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7692.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
  7693.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7694.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7695.     (vertical-layer <vlay>)
  7696.     (horizontal-layer <hlay>)
  7697.   -->
  7698.     (remove 1 3 4)
  7699.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7700.     (modify 5 ^min <gy1> ^min-net <nn>)
  7701.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7702.     (modify 6 ^min <gx1> ^min-net <nn>)
  7703.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7704.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7705.     (make context ^present check-for-routed-net)
  7706. )
  7707.  
  7708. (p p279
  7709.     (context ^present lshape3)
  7710.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7711.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
  7712.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
  7713.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7714.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7715.     (vertical-layer <vlay>)
  7716.     (horizontal-layer <hlay>)
  7717.   -->
  7718.     (remove 1 3 4)
  7719.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7720.     (modify 5 ^min <gy2> ^min-net <nn>)
  7721.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7722.     (modify 6 ^min <gx2> ^min-net <nn>)
  7723.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7724.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7725.     (make context ^present check-for-routed-net)
  7726. )
  7727.  
  7728. (p p280
  7729.     (context ^present lshape3)
  7730.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7731.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
  7732.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
  7733.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7734.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7735.     (vertical-layer <vlay>)
  7736.     (horizontal-layer <hlay>)
  7737.   -->
  7738.     (remove 1 3 4)
  7739.     (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7740.     (modify 5 ^min <gy1> ^min-net <nn>)
  7741.     (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7742.     (modify 6 ^min <gx2> ^min-net <nn>)
  7743.     (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7744.     (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7745.     (make context ^present check-for-routed-net)
  7746. )
  7747.  
  7748. (p p281
  7749.     (context ^present lshape4)
  7750.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7751.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <garb1> ^pin-name <pn>)
  7752.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <garb2>)
  7753.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7754.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7755.     (vertical-layer <vlay>)
  7756.     (horizontal-layer <hlay>)
  7757.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7758.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7759.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7760.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7761.   -->
  7762.     (remove 1 3 4)
  7763.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7764.     (modify 5 ^min <gy1> ^min-net <nn>)
  7765.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7766.     (modify 6 ^min <gx2> ^min-net <nn>)
  7767.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7768.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7769.     (make context ^present check-for-routed-net)
  7770. )
  7771.  
  7772. (p p282
  7773.     (context ^present lshape4)
  7774.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7775.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <garb1> ^pin-name <pn>)
  7776.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <garb2>)
  7777.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7778.     (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7779.     (vertical-layer <vlay>)
  7780.     (horizontal-layer <hlay>)
  7781.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7782.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7783.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7784.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7785.   -->
  7786.     (remove 1 3 4)
  7787.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7788.     (modify 5 ^min <gy1> ^min-net <nn>)
  7789.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7790.     (modify 6 ^min <gx1> ^min-net <nn>)
  7791.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7792.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7793.     (make context ^present check-for-routed-net)
  7794. )
  7795.  
  7796. (p p283
  7797.     (context ^present lshape4)
  7798.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7799.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <garb1> ^pin-name <pn>)
  7800.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <garb2>)
  7801.     (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7802.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7803.     (vertical-layer <vlay>)
  7804.     (horizontal-layer <hlay>)
  7805.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  7806.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  7807.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  7808.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  7809.   -->
  7810.     (remove 1 3 4)
  7811.     (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7812.     (modify 5 ^min <gy2> ^min-net <nn>)
  7813.     (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7814.     (modify 6 ^min <gx2> ^min-net <nn>)
  7815.     (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7816.     (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7817.     (make context ^present check-for-routed-net)
  7818. )
  7819.  
  7820. (p p284
  7821.     (context ^present lshape4)
  7822.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7823.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <garb1> ^pin-name <pn>)
  7824.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <garb2>)
  7825.     (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  7826.     (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  7827.     (vertical-layer <vlay>)
  7828.     (horizontal-layer <hlay>)
  7829.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx2>)
  7830.   - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx2>)
  7831.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy1>)
  7832.   - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy1>)
  7833.   -->
  7834.     (remove 1 3 4)
  7835.     (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
  7836.     (modify 5 ^min <gy1> ^min-net <nn>)
  7837.     (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7838.     (modify 6 ^min <gx2> ^min-net <nn>)
  7839.     (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
  7840.     (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
  7841.     (make context ^present check-for-routed-net)
  7842. )
  7843.  
  7844. (p p285
  7845.     { <c> (context ^present lshape1) }
  7846.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7847.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
  7848.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  7849.   - (ff ^grid-x <gx1> ^net-name <> <nn>)
  7850.     { <v> (vertical ^net-name nil ^min { <vmin1> <= <gy1> } ^max { <vmax1> > <vmin1> >= <gy1> } ^com <gx1> ^layer <lay> ^commo <gx2> ^compo <cpo> ^min-net <vnn1>) }
  7851.     { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com { <hcom> >= <vmin1> < <gy1> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
  7852.     (vertical-layer <lay>)
  7853.     (ff ^grid-x <gx2> ^net-name <> <nn>)
  7854.   - (horizontal ^net-name nil ^min <= <gx2> ^max >= <gx1> ^com { >= <vmin1> < <hcom> } ^layer <lay>)
  7855.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <hcom>)
  7856.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx1>)
  7857.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <hcom>)
  7858.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx2>)
  7859.   -->
  7860.     (remove <c>)
  7861.     (make vertical ^com <gx1> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <cpo> ^commo <gx2> ^min-net <vnn1> ^max-net <nn>)
  7862.     (modify <v> ^min <gy1> ^min-net <nn>)
  7863.     (make horizontal ^min <hmin> ^max <gx2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7864.     (modify <h> ^min <gx1> ^min-net <nn>)
  7865.     (make vertical ^com <gx1> ^layer <lay> ^min <hcom> ^max <gy1> ^commo <gx2> ^compo <cpo> ^net-name <nn> ^pin-name <pn1>)
  7866.     (make horizontal ^com <hcom> ^layer <lay> ^min <gx2> ^max <gx1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn1>)
  7867.     (modify <ff> ^grid-x <gx2> ^grid-y <hcom> ^can-chng-layer nil ^came-from east)
  7868.     (make context ^present check-for-routed-net)
  7869. )
  7870.  
  7871. (p p286
  7872.     { <c> (context ^present lshape1) }
  7873.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7874.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
  7875.     { <ff> (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  7876.   - (ff ^grid-x <gx2> ^net-name <> <nn>)
  7877.     { <v> (vertical ^net-name nil ^min { <vmin1> <= <gy2> } ^max { <vmax1> > <vmin1> >= <gy2> } ^com <gx2> ^layer <lay> ^commo <cmo> ^compo <gx1> ^max-net <vnn1>) }
  7878.     { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com { <hcom> <= <vmax1> > <gy2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
  7879.     (vertical-layer <lay>)
  7880.     (ff ^grid-x <gx1> ^net-name <> <nn>)
  7881.   - (horizontal ^net-name nil ^min <= <gx2> ^max >= <gx1> ^com { <= <vmax1> > <hcom> } ^layer <lay>)
  7882.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <hcom>)
  7883.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx2>)
  7884.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <hcom>)
  7885.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx1>)
  7886.   -->
  7887.     (remove <c>)
  7888.     (make vertical ^com <gx2> ^layer <lay> ^min <hcom> ^max <vmax1> ^compo <gx1> ^commo <cmo> ^max-net <vnn1> ^min-net <nn>)
  7889.     (modify <v> ^max <gy2> ^max-net <nn>)
  7890.     (make horizontal ^min <hmin> ^max <gx2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7891.     (modify <h> ^min <gx1> ^min-net <nn>)
  7892.     (make vertical ^com <gx2> ^layer <lay> ^max <hcom> ^min <gy2> ^commo <cmo> ^compo <gx1> ^net-name <nn> ^pin-name <pn2>)
  7893.     (make horizontal ^com <hcom> ^layer <lay> ^min <gx2> ^max <gx1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn2>)
  7894.     (modify <ff> ^grid-x <gx1> ^grid-y <hcom> ^can-chng-layer nil ^came-from west)
  7895.     (make context ^present check-for-routed-net)
  7896. )
  7897.  
  7898. (p p287
  7899.     { <c> (context ^present lshape1) }
  7900.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7901.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
  7902.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  7903.   - (ff ^grid-x <gx1> ^net-name <> <nn>)
  7904.     { <v> (vertical ^net-name nil ^min { <vmin1> <= <gy1> } ^max { <vmax1> > <vmin1> >= <gy1> } ^com <gx1> ^layer <lay> ^commo <cmo> ^compo <gx2> ^min-net <vnn1>) }
  7905.     { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com { <hcom> >= <vmin1> < <gy1> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
  7906.     (vertical-layer <lay>)
  7907.     (ff ^grid-x <gx2> ^net-name <> <nn>)
  7908.   - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com { >= <vmin1> < <hcom> } ^layer <lay>)
  7909.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <hcom>)
  7910.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx1>)
  7911.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <hcom>)
  7912.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx2>)
  7913.   -->
  7914.     (remove <c>)
  7915.     (make vertical ^com <gx1> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <gx2> ^commo <cmo> ^min-net <vnn1> ^max-net <nn>)
  7916.     (modify <v> ^min <gy1> ^min-net <nn>)
  7917.     (make horizontal ^min <hmin> ^max <gx1> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7918.     (modify <h> ^min <gx2> ^min-net <nn>)
  7919.     (make vertical ^com <gx1> ^layer <lay> ^min <hcom> ^max <gy1> ^commo <cmo> ^compo <gx2> ^net-name <nn> ^pin-name <pn1>)
  7920.     (make horizontal ^com <hcom> ^layer <lay> ^min <gx1> ^max <gx2> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn1>)
  7921.     (modify <ff> ^grid-x <gx2> ^grid-y <hcom> ^can-chng-layer nil ^came-from west)
  7922.     (make context ^present check-for-routed-net)
  7923. )
  7924.  
  7925. (p p288
  7926.     { <c> (context ^present lshape1) }
  7927.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7928.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
  7929.     { <ff> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  7930.   - (ff ^grid-x <gx2> ^net-name <> <nn>)
  7931.     { <v> (vertical ^net-name nil ^min { <vmin1> <= <gy2> } ^max { <vmax1> > <vmin1> >= <gy2> } ^com <gx2> ^layer <lay> ^commo <gx1> ^compo <cpo> ^max-net <vnn1>) }
  7932.     { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com { <hcom> <= <vmax1> > <gy2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
  7933.     (vertical-layer <lay>)
  7934.     (ff ^grid-x <gx1> ^net-name <> <nn>)
  7935.   - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com { <= <vmax1> > <hcom> } ^layer <lay>)
  7936.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <hcom>)
  7937.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx2>)
  7938.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <hcom>)
  7939.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx1>)
  7940.   -->
  7941.     (remove <c>)
  7942.     (make vertical ^com <gx2> ^layer <lay> ^min <hcom> ^max <vmax1> ^compo <cpo> ^commo <gx1> ^max-net <vnn1> ^min-net <nn>)
  7943.     (modify <v> ^max <gy2> ^max-net <nn>)
  7944.     (make horizontal ^min <hmin> ^max <gx1> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7945.     (modify <h> ^min <gx2> ^min-net <nn>)
  7946.     (make vertical ^com <gx2> ^layer <lay> ^max <hcom> ^min <gy2> ^commo <gx1> ^compo <cpo> ^net-name <nn> ^pin-name <pn2>)
  7947.     (make horizontal ^com <hcom> ^layer <lay> ^min <gx1> ^max <gx2> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn2>)
  7948.     (modify <ff> ^grid-x <gx1> ^grid-y <hcom> ^can-chng-layer nil ^came-from east)
  7949.     (make context ^present check-for-routed-net)
  7950. )
  7951.  
  7952. (p p289
  7953.     { <c> (context ^present lshape1) }
  7954.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7955.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
  7956.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  7957.   - (ff ^grid-y <gy1> ^net-name <> <nn>)
  7958.     { <v> (horizontal ^net-name nil ^min { <vmin1> <= <gx1> } ^max { <vmax1> > <vmin1> >= <gx1> } ^com <gy1> ^layer <lay> ^commo <gy2> ^compo <cpo> ^min-net <vnn1>) }
  7959.     { <h> (vertical ^net-name nil ^min { <hmin> <= <gy2> } ^max { <hmax> > <hmin> >= <gy1> } ^com { <hcom> >= <vmin1> < <gx1> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
  7960.     (horizontal-layer <lay>)
  7961.     (ff ^grid-y <gy2> ^net-name <> <nn>)
  7962.   - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com { >= <vmin1> < <hcom> } ^layer <lay>)
  7963.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <hcom>)
  7964.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy1>)
  7965.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <hcom>)
  7966.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy2>)
  7967.   -->
  7968.     (remove <c>)
  7969.     (make horizontal ^com <gy1> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <cpo> ^commo <gy2> ^min-net <vnn1> ^max-net <nn>)
  7970.     (modify <v> ^min <gx1> ^min-net <nn>)
  7971.     (make vertical ^min <hmin> ^max <gy2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7972.     (modify <h> ^min <gy1> ^min-net <nn>)
  7973.     (make horizontal ^com <gy1> ^layer <lay> ^min <hcom> ^max <gx1> ^commo <gy2> ^compo <cpo> ^net-name <nn> ^pin-name <pn1>)
  7974.     (make vertical ^com <hcom> ^layer <lay> ^min <gy2> ^max <gy1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn1>)
  7975.     (modify <ff> ^grid-y <gy2> ^grid-x <hcom> ^can-chng-layer nil ^came-from north)
  7976.     (make context ^present check-for-routed-net)
  7977. )
  7978.  
  7979. (p p290
  7980.     { <c> (context ^present lshape1) }
  7981.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  7982.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
  7983.     { <ff> (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  7984.   - (ff ^grid-y <gy2> ^net-name <> <nn>)
  7985.     { <v> (horizontal ^net-name nil ^min { <vmin1> <= <gx2> } ^max { <vmax1> > <vmin1> >= <gx2> } ^com <gy2> ^layer <lay> ^commo <cmo> ^compo <gy1> ^max-net <vnn1>) }
  7986.     { <h> (vertical ^net-name nil ^min { <hmin> <= <gy2> } ^max { <hmax> > <hmin> >= <gy1> } ^com { <hcom> <= <vmax1> > <gx2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
  7987.     (horizontal-layer <lay>)
  7988.     (ff ^grid-y <gy1> ^net-name <> <nn>)
  7989.   - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com { <= <vmax1> > <hcom> } ^layer <lay>)
  7990.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <hcom>)
  7991.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy2>)
  7992.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <hcom>)
  7993.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy1>)
  7994.   -->
  7995.     (remove <c>)
  7996.     (make horizontal ^com <gy2> ^layer <lay> ^min <hcom> ^max <vmax1> ^compo <gy1> ^commo <cmo> ^max-net <vnn1> ^min-net <nn>)
  7997.     (modify <v> ^max <gx2> ^max-net <nn>)
  7998.     (make vertical ^min <hmin> ^max <gy2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  7999.     (modify <h> ^min <gy1> ^min-net <nn>)
  8000.     (make horizontal ^com <gy2> ^layer <lay> ^max <hcom> ^min <gx2> ^commo <cmo> ^compo <gy1> ^net-name <nn> ^pin-name <pn2>)
  8001.     (make vertical ^com <hcom> ^layer <lay> ^min <gy2> ^max <gy1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn2>)
  8002.     (modify <ff> ^grid-y <gy1> ^grid-x <hcom> ^can-chng-layer nil ^came-from south)
  8003.     (make context ^present check-for-routed-net)
  8004. )
  8005.  
  8006. (p p291
  8007.     { <c> (context ^present lshape1) }
  8008.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  8009.     { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
  8010.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  8011.   - (ff ^grid-y <gy1> ^net-name <> <nn>)
  8012.     { <v> (horizontal ^net-name nil ^min { <vmin1> <= <gx1> } ^max { <vmax1> > <vmin1> >= <gx1> } ^com <gy1> ^layer <lay> ^commo <gy2> ^compo <cpo> ^max-net <vnn1>) }
  8013.     { <h> (vertical ^net-name nil ^min { <hmin> <= <gy2> } ^max { <hmax> > <hmin> >= <gy1> } ^com { <hcom> <= <vmax1> > <gx1> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
  8014.     (horizontal-layer <lay>)
  8015.     (ff ^grid-y <gy2> ^net-name <> <nn>)
  8016.   - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com { <= <vmax1> > <hcom> } ^layer <lay>)
  8017.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <hcom>)
  8018.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy1>)
  8019.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <hcom>)
  8020.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy2>)
  8021.   -->
  8022.     (remove <c>)
  8023.     (make horizontal ^com <gy1> ^layer <lay> ^min <hcom> ^max <vmax1> ^compo <cpo> ^commo <gy2> ^max-net <vnn1> ^min-net <nn>)
  8024.     (modify <v> ^max <gx1> ^max-net <nn>)
  8025.     (make vertical ^min <hmin> ^max <gy2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  8026.     (modify <h> ^min <gy1> ^min-net <nn>)
  8027.     (make horizontal ^com <gy1> ^layer <lay> ^min <gx1> ^max <hcom> ^commo <gy2> ^compo <cpo> ^net-name <nn> ^pin-name <pn1>)
  8028.     (make vertical ^com <hcom> ^layer <lay> ^min <gy2> ^max <gy1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn1>)
  8029.     (modify <ff> ^grid-y <gy2> ^grid-x <hcom> ^can-chng-layer nil ^came-from north)
  8030.     (make context ^present check-for-routed-net)
  8031. )
  8032.  
  8033. (p p292
  8034.     { <c> (context ^present lshape1) }
  8035.     (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
  8036.     (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
  8037.     { <ff> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  8038.   - (ff ^grid-y <gy2> ^net-name <> <nn>)
  8039.     { <v> (horizontal ^net-name nil ^min { <vmin1> <= <gx2> } ^max { <vmax1> > <vmin1> >= <gx2> } ^com <gy2> ^layer <lay> ^commo <cmo> ^compo <gy1> ^min-net <vnn1>) }
  8040.     { <h> (vertical ^net-name nil ^min { <hmin> <= <gy2> } ^max { <hmax> > <hmin> >= <gy1> } ^com { <hcom> >= <vmin1> < <gx2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
  8041.     (horizontal-layer <lay>)
  8042.     (ff ^grid-y <gy1> ^net-name <> <nn>)
  8043.   - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com { >= <vmin1> < <hcom> } ^layer <lay>)
  8044.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <hcom>)
  8045.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy2>)
  8046.   - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <hcom>)
  8047.   - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy1>)
  8048.   -->
  8049.     (remove <c>)
  8050.     (make horizontal ^com <gy2> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <gy1> ^commo <cmo> ^min-net <vnn1> ^max-net <nn>)
  8051.     (modify <v> ^min <gx2> ^min-net <nn>)
  8052.     (make vertical ^min <hmin> ^max <gy2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
  8053.     (modify <h> ^min <gy1> ^min-net <nn>)
  8054.     (make horizontal ^com <gy2> ^layer <lay> ^max <gx2> ^min <hcom> ^commo <cmo> ^compo <gy1> ^net-name <nn> ^pin-name <pn2>)
  8055.     (make vertical ^com <hcom> ^layer <lay> ^min <gy2> ^max <gy1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn2>)
  8056.     (modify <ff> ^grid-y <gy1> ^grid-x <hcom> ^can-chng-layer nil ^came-from south)
  8057.     (make context ^present check-for-routed-net)
  8058. )
  8059.  
  8060. (p p211
  8061.     (context ^present loose-constraint)
  8062.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> west ^can-chng-layer no)
  8063.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx> })
  8064.     (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> >= <gx> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <hnn>)
  8065.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <gx> ^max >= <gx>)
  8066.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^layer <> <lay>)
  8067.   - (ff ^net-name <nn> ^grid-x >= <gx> ^grid-y < <gy>)
  8068.   - (ff ^net-name <nn> ^grid-x >= <gx> ^grid-y > <gy>)
  8069.   -->
  8070.     (make horizontal ^min <min> ^max (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <hnn> ^max-net <nn>)
  8071.     (modify 4 ^min <gx> ^min-net <nn>)
  8072.     (make horizontal ^max <gx> ^min (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8073.     (modify 2 ^grid-x (compute <gx> - 1) ^came-from east ^can-chng-layer nil)
  8074.     (remove 1)
  8075.     (make context ^present propagate-constraint)
  8076. )
  8077.  
  8078. (p p212
  8079.     (context ^present loose-constraint)
  8080.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> south ^can-chng-layer no)
  8081.     (ff ^net-name <nn> ^grid-y { <gy2> < <gy> })
  8082.     (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> > <min> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <hnn>)
  8083.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy>)
  8084.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^layer <> <lay>)
  8085.   - (ff ^net-name <nn> ^grid-x < <gx> ^grid-y >= <gy>)
  8086.   - (ff ^net-name <nn> ^grid-x > <gx> ^grid-y >= <gy>)
  8087.   -->
  8088.     (make vertical ^min <min> ^max (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <hnn> ^max-net <nn>)
  8089.     (modify 4 ^min <gy> ^min-net <nn>)
  8090.     (make vertical ^max <gy> ^min (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8091.     (modify 2 ^grid-y (compute <gy> - 1) ^came-from north ^can-chng-layer nil)
  8092.     (remove 1)
  8093.     (make context ^present propagate-constraint)
  8094. )
  8095.  
  8096. (p p213
  8097.     (context ^present loose-constraint)
  8098.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> east ^can-chng-layer no)
  8099.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx> })
  8100.     (horizontal ^net-name nil ^min { <min> <= <gx> } ^max { <max> > <min> >= <gx2> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <hnn>)
  8101.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max > <gx>)
  8102.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^layer <> <lay>)
  8103.   - (ff ^net-name <nn> ^grid-x <= <gx> ^grid-y < <gy>)
  8104.   - (ff ^net-name <nn> ^grid-x <= <gx> ^grid-y > <gy>)
  8105.   -->
  8106.     (make horizontal ^max <max> ^min (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <hnn> ^min-net <nn>)
  8107.     (modify 4 ^max <gx> ^max-net <nn>)
  8108.     (make horizontal ^min <gx> ^max (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8109.     (modify 2 ^grid-x (compute <gx> + 1) ^came-from west ^can-chng-layer nil)
  8110.     (remove 1)
  8111.     (make context ^present propagate-constraint)
  8112. )
  8113.  
  8114. (p p214
  8115.     (context ^present loose-constraint)
  8116.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> north ^can-chng-layer no)
  8117.     (ff ^net-name <nn> ^grid-y { <gy2> > <gy> })
  8118.     (vertical ^net-name nil ^min { <min> <= <gy> } ^max { <max> > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <hnn>)
  8119.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy>)
  8120.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^layer <> <lay>)
  8121.   - (ff ^net-name <nn> ^grid-x < <gx> ^grid-y <= <gy>)
  8122.   - (ff ^net-name <nn> ^grid-x > <gx> ^grid-y <= <gy>)
  8123.   -->
  8124.     (make vertical ^max <max> ^min (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <hnn> ^min-net <nn>)
  8125.     (modify 4 ^max <gy> ^max-net <nn>)
  8126.     (make vertical ^min <gy> ^max (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8127.     (modify 2 ^grid-y (compute <gy> + 1) ^came-from south ^can-chng-layer nil)
  8128.     (remove 1)
  8129.     (make context ^present propagate-constraint)
  8130. )
  8131.  
  8132. (p p215
  8133.     (context ^present loose-constraint)
  8134.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> west ^can-chng-layer no)
  8135.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx> } ^grid-y <= <gy>)
  8136.     (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> > <min> >= <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <hnn>)
  8137.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <gx> ^max >= <gx>)
  8138.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  8139.   - (ff ^net-name <nn> ^grid-y > <gy>)
  8140.   -->
  8141.     (make horizontal ^min <min> ^max (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <hnn> ^max-net <nn>)
  8142.     (modify 4 ^min <gx> ^min-net <nn>)
  8143.     (make horizontal ^max <gx> ^min (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8144.     (modify 2 ^grid-x (compute <gx> - 1) ^came-from east ^can-chng-layer nil)
  8145.     (remove 1)
  8146.     (make context ^present propagate-constraint)
  8147. )
  8148.  
  8149. (p p216
  8150.     (context ^present loose-constraint)
  8151.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> west ^can-chng-layer no)
  8152.     (ff ^net-name <nn> ^grid-x { <gx2> < <gx> } ^grid-y >= <gy>)
  8153.     (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> > <min> >= <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <hnn>)
  8154.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <gx> ^max >= <gx>)
  8155.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <lay>)
  8156.   - (ff ^net-name <nn> ^grid-y < <gy>)
  8157.   -->
  8158.     (make horizontal ^min <min> ^max (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <hnn> ^max-net <nn>)
  8159.     (modify 4 ^min <gx> ^min-net <nn>)
  8160.     (make horizontal ^max <gx> ^min (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8161.     (modify 2 ^grid-x (compute <gx> - 1) ^came-from east ^can-chng-layer nil)
  8162.     (remove 1)
  8163.     (make context ^present propagate-constraint)
  8164. )
  8165.  
  8166. (p p217
  8167.     (context ^present loose-constraint)
  8168.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> east ^can-chng-layer no)
  8169.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y <= <gy>)
  8170.     (horizontal ^net-name nil ^min { <min> <= <gx> } ^max { <max> > <min> >= <gx2> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <hnn>)
  8171.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max > <gx>)
  8172.   - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  8173.   - (ff ^net-name <nn> ^grid-y > <gy>)
  8174.   -->
  8175.     (make horizontal ^max <max> ^min (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <hnn> ^min-net <nn>)
  8176.     (modify 4 ^max <gx> ^max-net <nn>)
  8177.     (make horizontal ^min <gx> ^max (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8178.     (modify 2 ^grid-x (compute <gx> + 1) ^came-from west ^can-chng-layer nil)
  8179.     (remove 1)
  8180.     (make context ^present propagate-constraint)
  8181. )
  8182.  
  8183. (p p218
  8184.     (context ^present loose-constraint)
  8185.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> east ^can-chng-layer no)
  8186.     (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y >= <gy>)
  8187.     (horizontal ^net-name nil ^min { <min> <= <gx> } ^max { <max> > <min> >= <gx2> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <hnn>)
  8188.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max > <gx>)
  8189.   - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <lay>)
  8190.   - (ff ^net-name <nn> ^grid-y < <gy>)
  8191.   -->
  8192.     (make horizontal ^max <max> ^min (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <hnn> ^min-net <nn>)
  8193.     (modify 4 ^max <gx> ^max-net <nn>)
  8194.     (make horizontal ^min <gx> ^max (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8195.     (modify 2 ^grid-x (compute <gx> + 1) ^came-from west ^can-chng-layer nil)
  8196.     (remove 1)
  8197.     (make context ^present propagate-constraint)
  8198. )
  8199.  
  8200. (p p219
  8201.     (context ^present loose-constraint)
  8202.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> north ^can-chng-layer no)
  8203.     (ff ^net-name <nn> ^grid-y { <gy2> > <gy> } ^grid-x >= <gx>)
  8204.     (vertical ^net-name nil ^min { <min> <= <gy> } ^max { <max> > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <vnn>)
  8205.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy>)
  8206.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <lay>)
  8207.   - (ff ^net-name <nn> ^grid-x < <gx>)
  8208.   -->
  8209.     (make vertical ^max <max> ^min (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <vnn> ^min-net <nn>)
  8210.     (modify 4 ^max <gy> ^max-net <nn>)
  8211.     (make vertical ^min <gy> ^max (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8212.     (modify 2 ^grid-y (compute <gy> + 1) ^came-from south ^can-chng-layer nil)
  8213.     (remove 1)
  8214.     (make context ^present propagate-constraint)
  8215. )
  8216.  
  8217. (p p220
  8218.     (context ^present loose-constraint)
  8219.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> north ^can-chng-layer no)
  8220.     (ff ^net-name <nn> ^grid-y { <gy2> > <gy> } ^grid-x <= <gx>)
  8221.     (vertical ^net-name nil ^min { <min> <= <gy> } ^max { <max> > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <vnn>)
  8222.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy>)
  8223.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  8224.   - (ff ^net-name <nn> ^grid-x > <gx>)
  8225.   -->
  8226.     (make vertical ^max <max> ^min (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <vnn> ^min-net <nn>)
  8227.     (modify 4 ^max <gy> ^max-net <nn>)
  8228.     (make vertical ^min <gy> ^max (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8229.     (modify 2 ^grid-y (compute <gy> + 1) ^came-from south ^can-chng-layer nil)
  8230.     (remove 1)
  8231.     (make context ^present propagate-constraint)
  8232. )
  8233.  
  8234. (p p221
  8235.     (context ^present loose-constraint)
  8236.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> south ^can-chng-layer no)
  8237.     (ff ^net-name <nn> ^grid-y { <gy2> < <gy> } ^grid-x <= <gx>)
  8238.     (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> > <min> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <vnn>)
  8239.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy>)
  8240.   - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  8241.   - (ff ^net-name <nn> ^grid-x > <gx>)
  8242.   -->
  8243.     (make vertical ^min <min> ^max (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <vnn> ^min-net <nn>)
  8244.     (modify 4 ^min <gy> ^min-net <nn>)
  8245.     (make vertical ^max <gy> ^min (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8246.     (modify 2 ^grid-y (compute <gy> - 1) ^came-from north ^can-chng-layer nil)
  8247.     (remove 1)
  8248.     (make context ^present propagate-constraint)
  8249. )
  8250.  
  8251. (p p222
  8252.     (context ^present loose-constraint)
  8253.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> north ^can-chng-layer no)
  8254.     (ff ^net-name <nn> ^grid-y { <gy2> < <gy> } ^grid-x >= <gx>)
  8255.     (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> > <min> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <vnn>)
  8256.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy>)
  8257.   - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <lay>)
  8258.   - (ff ^net-name <nn> ^grid-x < <gx>)
  8259.   -->
  8260.     (make vertical ^min <min> ^max (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <vnn> ^min-net <nn>)
  8261.     (modify 4 ^min <gy> ^min-net <nn>)
  8262.     (make vertical ^max <gy> ^min (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
  8263.     (modify 2 ^grid-y (compute <gy> - 1) ^came-from north ^can-chng-layer nil)
  8264.     (remove 1)
  8265.     (make context ^present propagate-constraint)
  8266. )
  8267.  
  8268. (p p223
  8269.     (context ^present loose-constraint)
  8270.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8271.     (ff ^net-name <nn> ^grid-x { <gx2> > <com1> } ^grid-y <gy>)
  8272.     (horizontal ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gx2> } ^com { <com2> >= <min1> <= <max1> >= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8273.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  8274.   - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  8275.   - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^layer <> <lay>)
  8276.   - (ff ^net-name <nn> ^grid-x <com1>)
  8277.   -->
  8278.     (make horizontal ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
  8279.     (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
  8280.     (make horizontal ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8281.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> + 1) ^grid-y <com2> ^grid-layer <lay> ^came-from west)
  8282.     (remove 1)
  8283.     (make context ^present propagate-constraint)
  8284. )
  8285.  
  8286. (p p224
  8287.     (context ^present loose-constraint)
  8288.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8289.     (ff ^net-name <nn> ^grid-y { <gy2> > <com1> } ^grid-x <gx>)
  8290.     (vertical ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gy2> } ^com { <com2> >= <min1> <= <max1> >= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8291.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  8292.   - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  8293.   - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^layer <> <lay>)
  8294.   - (ff ^net-name <nn> ^grid-y <com1>)
  8295.   -->
  8296.     (make vertical ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
  8297.     (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
  8298.     (make vertical ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8299.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> + 1) ^grid-x <com2> ^grid-layer <lay> ^came-from south)
  8300.     (remove 1)
  8301.     (make context ^present propagate-constraint)
  8302. )
  8303.  
  8304. (p p225
  8305.     (context ^present loose-constraint)
  8306.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8307.     (ff ^net-name <nn> ^grid-x { <gx2> < <com1> } ^grid-y <gy>)
  8308.     (horizontal ^net-name nil ^min { <min2> <= <gx2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> >= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^max-net <hnn>)
  8309.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  8310.   - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  8311.   - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^layer <> <lay>)
  8312.   - (ff ^net-name <nn> ^grid-x <com1>)
  8313.   -->
  8314.     (make horizontal ^max <max2> ^min <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^max-net <hnn> ^min-net <nn>)
  8315.     (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
  8316.     (make horizontal ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8317.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> - 1) ^grid-y <com2> ^grid-layer <lay> ^came-from east)
  8318.     (remove 1)
  8319.     (make context ^present propagate-constraint)
  8320. )
  8321.  
  8322. (p p226
  8323.     (context ^present loose-constraint)
  8324.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8325.     (ff ^net-name <nn> ^grid-y { <gy2> < <com1> } ^grid-x <gx>)
  8326.     (vertical ^net-name nil ^min { <min2> <= <gy2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> >= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^max-net <hnn>)
  8327.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  8328.   - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  8329.   - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^layer <> <lay>)
  8330.   - (ff ^net-name <nn> ^grid-y <com1>)
  8331.   -->
  8332.     (make vertical ^max <max2> ^min <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^max-net <hnn> ^min-net <nn>)
  8333.     (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
  8334.     (make vertical ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8335.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> - 1) ^grid-x <com2> ^grid-layer <lay> ^came-from north)
  8336.     (remove 1)
  8337.     (make context ^present propagate-constraint)
  8338. )
  8339.  
  8340. (p p227
  8341.     (context ^present loose-constraint)
  8342.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8343.     (ff ^net-name <nn> ^grid-x { <gx2> > <com1> } ^grid-y <gy>)
  8344.     (horizontal ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gx2> } ^com { <com2> >= <min1> <= <max1> <= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8345.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  8346.   - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  8347.   - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^layer <> <lay>)
  8348.   - (ff ^net-name <nn> ^grid-x <com1>)
  8349.   -->
  8350.     (make horizontal ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
  8351.     (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
  8352.     (make horizontal ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8353.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> + 1) ^grid-y <com2> ^grid-layer <lay> ^came-from west)
  8354.     (remove 1)
  8355.     (make context ^present propagate-constraint)
  8356. )
  8357.  
  8358. (p p228
  8359.     (context ^present loose-constraint)
  8360.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8361.     (ff ^net-name <nn> ^grid-y { <gy2> > <com1> } ^grid-x <gx>)
  8362.     (vertical ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gy2> } ^com { <com2> >= <min1> <= <max1> <= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8363.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  8364.   - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  8365.   - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^layer <> <lay>)
  8366.   - (ff ^net-name <nn> ^grid-y <com1>)
  8367.   -->
  8368.     (make vertical ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
  8369.     (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
  8370.     (make vertical ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8371.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> + 1) ^grid-x <com2> ^grid-layer <lay> ^came-from south)
  8372.     (remove 1)
  8373.     (make context ^present propagate-constraint)
  8374. )
  8375.  
  8376. (p p229
  8377.     (context ^present loose-constraint)
  8378.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8379.     (ff ^net-name <nn> ^grid-x { <gx2> < <com1> } ^grid-y <gy>)
  8380.     (horizontal ^net-name nil ^min { <min2> <= <gx2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> <= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^max-net <hnn>)
  8381.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  8382.   - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  8383.   - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^layer <lay>)
  8384.   - (ff ^net-name <nn> ^grid-x <com1>)
  8385.   -->
  8386.     (make horizontal ^max <max2> ^min <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^max-net <hnn> ^min-net <nn>)
  8387.     (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
  8388.     (make horizontal ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8389.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> - 1) ^grid-y <com2> ^grid-layer <lay> ^came-from east)
  8390.     (remove 1)
  8391.     (make context ^present propagate-constraint)
  8392. )
  8393.  
  8394. (p p230
  8395.     (context ^present loose-constraint)
  8396.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8397.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> < <com1> })
  8398.     (vertical ^net-name nil ^min { <min2> <= <gy2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> <= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^max-net <hnn>)
  8399.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  8400.   - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  8401.   - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^layer <lay>)
  8402.   - (ff ^net-name <nn> ^grid-y <com1>)
  8403.   -->
  8404.     (make vertical ^max <max2> ^min <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^max-net <hnn> ^min-net <nn>)
  8405.     (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
  8406.     (make vertical ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8407.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> - 1) ^grid-x <com2> ^grid-layer <lay> ^came-from north)
  8408.     (remove 1)
  8409.     (make context ^present propagate-constraint)
  8410. )
  8411.  
  8412. (p p231
  8413.     (context ^present loose-constraint)
  8414.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8415.     (ff ^net-name <nn> ^grid-x { <gx2> > <com1> } ^grid-y <gy>)
  8416.     (horizontal ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gx2> } ^com { <com2> >= <min1> <= <max1> >= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8417.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  8418.   - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  8419.   - (vertical ^net-name nil ^max <min1> ^com <com1>)
  8420.   - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com <com2> ^layer <> <lay>)
  8421.   - (ff ^net-name <nn> ^grid-x <com1>)
  8422.   - (vertical ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  8423.   -->
  8424.     (make horizontal ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
  8425.     (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
  8426.     (make horizontal ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8427.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> + 1) ^grid-y <com2> ^grid-layer <lay> ^came-from west)
  8428.     (remove 1)
  8429.     (make context ^present propagate-constraint)
  8430. )
  8431.  
  8432. (p p232
  8433.     (context ^present loose-constraint)
  8434.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8435.     (ff ^net-name <nn> ^grid-x { <gx2> > <com1> } ^grid-y <gy>)
  8436.     (horizontal ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gx2> } ^com { <com2> >= <min1> <= <max1> <= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8437.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  8438.   - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  8439.   - (vertical ^net-name nil ^max <min1> ^com <com1>)
  8440.   - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com <com2> ^layer <> <lay>)
  8441.   - (ff ^net-name <nn> ^grid-x <com1>)
  8442.   - (vertical ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  8443.   -->
  8444.     (make horizontal ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
  8445.     (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
  8446.     (make horizontal ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8447.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> + 1) ^grid-y <com2> ^grid-layer <lay> ^came-from west)
  8448.     (remove 1)
  8449.     (make context ^present propagate-constraint)
  8450. )
  8451.  
  8452. (p p233
  8453.     (context ^present loose-constraint)
  8454.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8455.     (ff ^net-name <nn> ^grid-x { <gx2> < <com1> } ^grid-y <gy>)
  8456.     (horizontal ^net-name nil ^min { <min2> <= <gx2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> >= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8457.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  8458.   - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  8459.   - (vertical ^net-name nil ^max <min1> ^com <com1>)
  8460.   - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com <com2> ^layer <> <lay>)
  8461.   - (ff ^net-name <nn> ^grid-x <com1>)
  8462.   - (vertical ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  8463.   -->
  8464.     (make horizontal ^min <com1> ^max <max2> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^min-net <nn>)
  8465.     (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
  8466.     (make horizontal ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8467.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> - 1) ^grid-y <com2> ^grid-layer <lay> ^came-from east)
  8468.     (remove 1)
  8469.     (make context ^present propagate-constraint)
  8470. )
  8471.  
  8472. (p p234
  8473.     (context ^present loose-constraint)
  8474.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8475.     (ff ^net-name <nn> ^grid-x { <gx2> < <com1> } ^grid-y <gy>)
  8476.     (horizontal ^net-name nil ^min { <min2> <= <gx2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> <= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8477.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  8478.   - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  8479.   - (vertical ^net-name nil ^max <min1> ^com <com1>)
  8480.   - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com <com2> ^layer <> <lay>)
  8481.   - (ff ^net-name <nn> ^grid-x <com1>)
  8482.   - (vertical ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  8483.   -->
  8484.     (make horizontal ^min <com1> ^max <max2> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^min-net <nn>)
  8485.     (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
  8486.     (make horizontal ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8487.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> - 1) ^grid-y <com2> ^grid-layer <lay> ^came-from east)
  8488.     (remove 1)
  8489.     (make context ^present propagate-constraint)
  8490. )
  8491.  
  8492. (p p235
  8493.     (context ^present loose-constraint)
  8494.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8495.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> > <com1> })
  8496.     (vertical ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gy2> } ^com { <com2> >= <min1> <= <max1> >= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8497.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  8498.   - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  8499.   - (horizontal ^net-name nil ^max <min1> ^com <com1>)
  8500.   - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com <com2> ^layer <> <lay>)
  8501.   - (ff ^net-name <nn> ^grid-y <com1>)
  8502.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  8503.   -->
  8504.     (make vertical ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
  8505.     (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
  8506.     (make vertical ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8507.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> + 1) ^grid-x <com2> ^grid-layer <lay> ^came-from south)
  8508.     (remove 1)
  8509.     (make context ^present propagate-constraint)
  8510. )
  8511.  
  8512. (p p236
  8513.     (context ^present loose-constraint)
  8514.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8515.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> > <com1> })
  8516.     (vertical ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gy2> } ^com { <com2> >= <min1> <= <max1> <= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8517.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  8518.   - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  8519.   - (horizontal ^net-name nil ^max <min1> ^com <com1>)
  8520.   - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com <com2> ^layer <> <lay>)
  8521.   - (ff ^net-name <nn> ^grid-y <com1>)
  8522.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  8523.   -->
  8524.     (make vertical ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
  8525.     (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
  8526.     (make vertical ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8527.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> + 1) ^grid-x <com2> ^grid-layer <lay> ^came-from south)
  8528.     (remove 1)
  8529.     (make context ^present propagate-constraint)
  8530. )
  8531.  
  8532. (p p237
  8533.     (context ^present loose-constraint)
  8534.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8535.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> < <com1> })
  8536.     (vertical ^net-name nil ^min { <min2> <= <gy2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> >= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  8537.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  8538.   - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  8539.   - (horizontal ^net-name nil ^max <min1> ^com <com1>)
  8540.   - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com <com2> ^layer <> <lay>)
  8541.   - (ff ^net-name <nn> ^grid-y <com1>)
  8542.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  8543.   -->
  8544.     (make vertical ^min <com1> ^max <max2> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^min-net <nn>)
  8545.     (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
  8546.     (make vertical ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8547.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> - 1) ^grid-x <com2> ^grid-layer <lay> ^came-from north)
  8548.     (remove 1)
  8549.     (make context ^present propagate-constraint)
  8550. )
  8551.  
  8552. (p p238
  8553.     (context ^present loose-constraint)
  8554.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
  8555.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> < <com1> })
  8556.     (vertical ^net-name nil ^min { <min2> <= <gy2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> <= <gx> } ^layer <lay> ^commo <cmo2> ^compo <cpo2> ^min-net <hnn>)
  8557.   - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  8558.   - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  8559.   - (horizontal ^net-name nil ^max <min1> ^com <com1>)
  8560.   - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com <com2> ^layer <> <lay>)
  8561.   - (ff ^net-name <nn> ^grid-y <com1>)
  8562.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  8563.   -->
  8564.     (make vertical ^min <com1> ^max <max2> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^min-net <nn>)
  8565.     (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
  8566.     (make vertical ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
  8567.     (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> - 1) ^grid-x <com2> ^grid-layer <lay> ^came-from north)
  8568.     (remove 1)
  8569.     (make context ^present propagate-constraint)
  8570. )
  8571.  
  8572. (p p239
  8573.     (context ^present loose-constraint0)
  8574.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
  8575.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
  8576.     (vertical ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy> ^com { <vcom> > <gx> } ^layer <garb1> ^compo <garb2> ^commo <garb3> ^pin-name <> <pn>)
  8577.   - (ff ^net-name <nn> ^grid-y > <gy>)
  8578.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com <gy>)
  8579.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <vcom> ^com <gy>)
  8580.     (vertical ^net-name nil ^min { <min> < <gy> } ^max >= <gy> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>)
  8581.   - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
  8582.     (congestion ^direction row ^coordinate <gy> ^como <hcmo>)
  8583.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  8584.   -->
  8585.     (make vertical ^net-name nil ^max <hcmo> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
  8586.     (modify 5 ^min <gy> ^min-net <nn>)
  8587.     (make vertical ^net-name <nn> ^max <gy> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  8588.     (modify 2 ^grid-y <hcmo> ^can-chng-layer nil)
  8589.     (modify 1 ^present propagate-constraint)
  8590. )
  8591.  
  8592. (p p240
  8593.     (context ^present loose-constraint0)
  8594.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
  8595.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
  8596.     (vertical ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy> ^com { <vcom> < <gx> } ^layer <garb1> ^compo <garb2> ^commo <garb3> ^pin-name <> <pn>)
  8597.   - (ff ^net-name <nn> ^grid-y > <gy>)
  8598.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com <gy>)
  8599.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom> ^max >= <gx> ^com <gy>)
  8600.     (vertical ^net-name nil ^min { <min> < <gy> } ^max >= <gy> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>)
  8601.   - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
  8602.     (congestion ^direction row ^coordinate <gy> ^como <hcmo>)
  8603.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  8604.   -->
  8605.     (make vertical ^net-name nil ^max <hcmo> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
  8606.     (modify 5 ^min <gy> ^min-net <nn>)
  8607.     (make vertical ^net-name <nn> ^max <gy> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  8608.     (modify 2 ^grid-y <hcmo> ^can-chng-layer nil)
  8609.     (modify 1 ^present propagate-constraint)
  8610. )
  8611.  
  8612. (p p241
  8613.     (context ^present loose-constraint0)
  8614.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from south)
  8615.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
  8616.     (vertical ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy> ^com { <vcom> > <gx> } ^layer <garb1> ^compo <garb2> ^commo <garb3> ^pin-name <> <pn>)
  8617.   - (ff ^net-name <nn> ^grid-y < <gy>)
  8618.   - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com <gy>)
  8619.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <vcom> ^com <gy>)
  8620.     (vertical ^net-name nil ^min <= <gy> ^max { <max> > <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>)
  8621.   - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
  8622.     (congestion ^direction row ^coordinate <hcmo> ^como <gy>)
  8623.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  8624.   -->
  8625.     (make vertical ^net-name nil ^max <max> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^max-net <mn> ^min-net <nn>)
  8626.     (modify 5 ^max <gy> ^max-net <nn>)
  8627.     (make vertical ^net-name <nn> ^min <gy> ^max <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  8628.     (modify 2 ^grid-y <hcmo> ^can-chng-layer nil)
  8629.     (modify 1 ^present propagate-constraint)
  8630. )
  8631.  
  8632. (p p242
  8633.     (context ^present loose-constraint0)
  8634.     (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from south)
  8635.     (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
  8636.     (vertical ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy> ^com { <vcom> < <gx> } ^layer <garb1> ^compo <garb2> ^commo <garb3> ^pin-name <> <pn>)
  8637.   - (ff ^net-name <nn> ^grid-y < <gy>)
  8638.   - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com <gy>)
  8639.   - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom> ^max >= <gx> ^com <gy>)
  8640.     (vertical ^net-name nil ^min <= <gy> ^max { <max> > <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>)
  8641.   - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
  8642.     (congestion ^direction row ^coordinate <hcmo> ^como <gy>)
  8643.   - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  8644.   -->
  8645.     (make vertical ^net-name nil ^max <max> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^max-net <mn> ^min-net <nn>)
  8646.     (modify 5 ^max <gy> ^max-net <nn>)
  8647.     (make vertical ^net-name <nn> ^min <gy> ^max <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
  8648.     (modify 2 ^grid-y <hcmo> ^can-chng-layer nil)
  8649.     (modify 1 ^present propagate-constraint)
  8650. )
  8651.  
  8652. (p p243
  8653.     (context ^present loose-constraint0)
  8654.   -->
  8655.     (modify 1 ^present loose-constraint)
  8656. )
  8657.  
  8658. (p p363
  8659.     (move-via <nn>)
  8660.   -->
  8661.     (remove 1)
  8662.     (make finally-routed <nn>)
  8663. )
  8664.  
  8665. (p p364
  8666.     (move-via <nn>)
  8667.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^compo <garb1> ^commo <hcmo> ^pin-name <pn>)
  8668.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <hcmo> ^max <hcom> ^com { <vcom> >= <hmin> <= <hmax> } ^layer { <vlay> <> <hlay> })
  8669.     (vertical ^net-name nil ^min { <vmin2> <= <hcmo> } ^max { <vmax2> > <vmin2> >= <hcom> } ^com <vcom> ^layer <hlay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  8670.   - (horizontal ^net-name <> <nn> ^min < <vcom> ^max >= <vcom> ^com <hcmo>)
  8671.   - (vertical ^net-name <> <nn> ^min < <hcmo> ^max <hcmo> ^com <vcom>)
  8672.   -->
  8673.     (modify 3 ^max <hcmo>)
  8674.     (make vertical ^layer <vlay> ^max <hcom> ^min <hcmo> ^com <vcom> ^min-net <nn> ^commo <vcmo> ^compo <vcpo>)
  8675.     (make vertical ^layer <hlay> ^min <vmin2> ^max <hcmo> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn> ^com <vcom>)
  8676.     (modify 4 ^min <hcom> ^min-net <nn>)
  8677.     (make vertical ^net-name <nn> ^pin-name <pn> ^layer <hlay> ^min <hcmo> ^max <hcom> ^commo <vcmo> ^compo <vcpo> ^com <vcom>)
  8678.     (remove 1)
  8679.     (make move-via <nn> <vlay> <vcom> <hcom>)
  8680. )
  8681.  
  8682. (p p365
  8683.     (move-via <nn>)
  8684.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^compo <garb1> ^commo <hcmo> ^pin-name <pn>)
  8685.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <hcmo> ^max <hcom> ^com { <vcom> >= <hmin> <= <hmax> } ^layer { <vlay> <> <hlay> })
  8686.     (vertical ^net-name nil ^min { <vmin2> <= <hcmo> } ^max { <vmax2> > <vmin2> >= <hcom> } ^com <vcom> ^layer <hlay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  8687.   - (horizontal ^net-name <> <nn> ^min <= <vcom> ^max > <vcom> ^com <hcmo>)
  8688.   - (vertical ^net-name <> <nn> ^min < <hcmo> ^max <hcmo> ^com <vcom>)
  8689.   -->
  8690.     (modify 3 ^max <hcmo>)
  8691.     (make vertical ^layer <vlay> ^max <hcom> ^min <hcmo> ^com <vcom> ^min-net <nn> ^commo <vcmo> ^compo <vcpo>)
  8692.     (make vertical ^layer <hlay> ^min <vmin2> ^max <hcmo> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn> ^com <vcom>)
  8693.     (modify 4 ^min <hcom> ^min-net <nn>)
  8694.     (make vertical ^net-name <nn> ^pin-name <pn> ^layer <hlay> ^min <hcmo> ^max <hcom> ^commo <vcmo> ^compo <vcpo> ^com <vcom>)
  8695.     (remove 1)
  8696.     (make move-via <nn> <vlay> <vcom> <hcom>)
  8697. )
  8698.  
  8699. (p p366
  8700.     (move-via <nn>)
  8701.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay> ^compo <garb1> ^commo <vcmo> ^pin-name <pn>)
  8702.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcmo> ^max <vcom> ^com { <hcom> >= <vmin> <= <vmax> } ^layer { <hlay> <> <vlay> })
  8703.     (horizontal ^net-name nil ^min { <hmin2> <= <vcmo> } ^max { <hmax2> > <hmin2> >= <vcom> } ^com <hcom> ^layer <vlay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  8704.   - (vertical ^net-name <> <nn> ^min < <hcom> ^max >= <hcom> ^com <vcmo>)
  8705.   - (horizontal ^net-name <> <nn> ^min < <vcmo> ^max <vcmo> ^com <hcom>)
  8706.   -->
  8707.     (modify 3 ^max <vcmo>)
  8708.     (make horizontal ^layer <hlay> ^max <vcom> ^min <vcmo> ^com <hcom> ^min-net <nn> ^commo <hcmo> ^compo <hcpo>)
  8709.     (make horizontal ^layer <vlay> ^min <hmin2> ^max <vcmo> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn> ^com <hcom>)
  8710.     (modify 4 ^min <vcom> ^min-net <nn>)
  8711.     (make horizotnal ^net-name <nn> ^pin-name <pn> ^layer <vlay> ^min <vcmo> ^max <vcom> ^commo <hcmo> ^compo <hcpo> ^com <hcom>)
  8712.     (remove 1)
  8713.     (make move-via <nn> <hlay> <hcom> <vcom>)
  8714. )
  8715.  
  8716. (p p367
  8717.     (move-via <nn>)
  8718.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay> ^compo <garb1> ^commo <vcmo> ^pin-name <pn>)
  8719.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcmo> ^com { <hcom> >= <vmin> <= <vmax> } ^max <vcom> ^layer { <hlay> <> <vlay> })
  8720.     (horizontal ^net-name nil ^min { <hmin2> <= <vcmo> } ^max { <hmax2> > <hmin2> >= <vcom> } ^com <hcom> ^layer <vlay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  8721.   - (vertical ^net-name <> <nn> ^min <= <hcom> ^max > <hcom> ^com <vcmo>)
  8722.   - (horizontal ^net-name <> <nn> ^min < <vcmo> ^max <vcmo> ^com <hcom>)
  8723.   -->
  8724.     (modify 3 ^max <vcmo>)
  8725.     (make horizontal ^layer <hlay> ^max <vcom> ^min <vcmo> ^com <hcom> ^min-net <nn> ^commo <hcmo> ^compo <hcpo>)
  8726.     (make horizontal ^layer <vlay> ^min <hmin2> ^max <vcmo> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn> ^com <hcom>)
  8727.     (modify 4 ^min <vcom> ^min-net <nn>)
  8728.     (make horizotnal ^net-name <nn> ^pin-name <pn> ^layer <vlay> ^min <vcmo> ^max <vcom> ^commo <hcmo> ^compo <hcpo> ^com <hcom>)
  8729.     (remove 1)
  8730.     (make move-via <nn> <hlay> <hcom> <vcom>)
  8731. )
  8732.  
  8733. (p p368
  8734.     (move-via <nn>)
  8735.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^compo <hcpo> ^commo <garb1> ^pin-name <pn>)
  8736.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <hcom> ^max >= <hcpo> ^com { <vcom> >= <hmin> <= <hmax> } ^layer { <vlay> <> <hlay> })
  8737.     (vertical ^net-name nil ^min { <vmin2> <= <hcom> } ^max { <vmax2> > <vmin2> >= <hcpo> } ^com <vcom> ^layer <hlay> ^commo <vcmo> ^compo <vcpo> ^min-net <mn>)
  8738.   - (horizontal ^net-name <> <nn> ^min < <vcom> ^max >= <vcom> ^com <hcpo>)
  8739.   - (vertical ^net-name <> <nn> ^min <hcpo> ^max > <hcpo> ^com <vcom>)
  8740.   -->
  8741.     (modify 3 ^min <hcpo>)
  8742.     (make vertical ^layer <vlay> ^min <hcom> ^max <hcpo> ^com <vcom> ^max-net <nn> ^commo <vcmo> ^compo <vcpo>)
  8743.     (make vertical ^layer <hlay> ^min <vmin2> ^max <hcom> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn> ^com <vcom>)
  8744.     (modify 4 ^min <hcpo> ^min-net <nn>)
  8745.     (make vertical ^net-name <nn> ^pin-name <pn> ^layer <hlay> ^min <hcom> ^max <hcpo> ^commo <vcmo> ^compo <vcpo> ^com <vcom>)
  8746.     (remove 1)
  8747.     (make move-via <nn> <vlay> <vcom> <hcom>)
  8748. )
  8749.  
  8750. (p p369
  8751.     (move-via <nn>)
  8752.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^compo <hcpo> ^commo <garb1> ^pin-name <pn>)
  8753.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <hcom> ^max >= <hcpo> ^com { <vcom> >= <hmin> <= <hmax> } ^layer { <vlay> <> <hlay> })
  8754.     (vertical ^net-name nil ^min { <vmin2> <= <hcom> } ^max { <vmax2> > <vmin2> >= <hcpo> } ^com <vcom> ^layer <hlay> ^commo <vcmo> ^compo <vcpo> ^min-net <mn>)
  8755.   - (horizontal ^net-name <> <nn> ^min <= <vcom> ^max > <vcom> ^com <hcpo>)
  8756.   - (vertical ^net-name <> <nn> ^min <hcpo> ^max > <hcpo> ^com <vcom>)
  8757.   -->
  8758.     (modify 3 ^min <hcpo>)
  8759.     (make vertical ^layer <vlay> ^min <hcom> ^max <hcpo> ^com <vcom> ^max-net <nn> ^commo <vcmo> ^compo <vcpo>)
  8760.     (make vertical ^layer <hlay> ^min <vmin2> ^max <hcom> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn> ^com <vcom>)
  8761.     (modify 4 ^min <hcpo> ^min-net <nn>)
  8762.     (make vertical ^net-name <nn> ^pin-name <pn> ^layer <hlay> ^min <hcom> ^max <hcpo> ^commo <vcmo> ^compo <vcpo> ^com <vcom>)
  8763.     (remove 1)
  8764.     (make move-via <nn> <vlay> <vcom> <hcom>)
  8765. )
  8766.  
  8767. (p p370
  8768.     (move-via <nn>)
  8769.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay> ^compo <vcpo> ^commo <garb1> ^pin-name <pn>)
  8770.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom> ^max >= <vcpo> ^com { <hcom> >= <vmin> <= <vmax> } ^layer { <hlay> <> <vlay> })
  8771.     (horizontal ^net-name nil ^min { <hmin2> <= <vcom> } ^max { <hmax2> > <hmin2> >= <vcpo> } ^com <hcom> ^layer <vlay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  8772.   - (vertical ^net-name <> <nn> ^min < <hcom> ^max >= <hcom> ^com <vcpo>)
  8773.   - (horizontal ^net-name <> <nn> ^min <vcpo> ^max > <vcpo> ^com <hcom>)
  8774.   -->
  8775.     (modify 3 ^min <vcpo>)
  8776.     (make horizontal ^layer <hlay> ^max <vcpo> ^min <vcom> ^com <hcom> ^max-net <nn> ^commo <hcmo> ^compo <hcpo>)
  8777.     (make horizontal ^layer <vlay> ^min <hmin2> ^max <vcom> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn> ^com <hcom>)
  8778.     (modify 4 ^min <vcpo> ^min-net <nn>)
  8779.     (make horizotnal ^net-name <nn> ^pin-name <pn> ^layer <vlay> ^min <vcom> ^max <vcpo> ^commo <hcmo> ^compo <hcpo> ^com <hcom>)
  8780.     (remove 1)
  8781.     (make move-via <nn> <hlay> <hcom> <vcom>)
  8782. )
  8783.  
  8784. (p p371
  8785.     (move-via <nn>)
  8786.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay> ^compo <vcpo> ^commo <garb1> ^pin-name <pn>)
  8787.     (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom> ^max >= <vcpo> ^com { <hcom> >= <vmin> <= <vmax> } ^layer { <hlay> <> <vlay> })
  8788.     (horizontal ^net-name nil ^min { <hmin2> <= <vcom> } ^max { <hmax2> > <hmin2> >= <vcpo> } ^com <hcom> ^layer <vlay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  8789.   - (vertical ^net-name <> <nn> ^min <= <hcom> ^max > <hcom> ^com <vcmo>)
  8790.   - (horizontal ^net-name <> <nn> ^min <vcpo> ^max > <vcpo> ^com <hcom>)
  8791.   -->
  8792.     (modify 3 ^min <vcpo>)
  8793.     (make horizontal ^layer <hlay> ^max <vcpo> ^min <vcom> ^com <hcom> ^max-net <nn> ^commo <hcmo> ^compo <hcpo>)
  8794.     (make horizontal ^layer <vlay> ^min <hmin2> ^max <vcom> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn> ^com <hcom>)
  8795.     (modify 4 ^min <vcpo> ^min-net <nn>)
  8796.     (make horizotnal ^net-name <nn> ^pin-name <pn> ^layer <vlay> ^min <vcom> ^max <vcpo> ^commo <hcmo> ^compo <hcpo> ^com <hcom>)
  8797.     (remove 1)
  8798.     (make move-via <nn> <hlay> <hcom> <vcom>)
  8799. )
  8800.  
  8801. (p p372
  8802.     (move-via <nn>)
  8803.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin1> ^max <vmax1> ^com <vcom1> ^layer <vlay> ^compo <vcpo1> ^commo <vcmo1> ^pin-name <pn1>)
  8804.     (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmax1> ^max <vmax2> ^com { <vcom2> > <vcom1> } ^layer <vlay> ^compo <vcpo2> ^commo <vcmo2> ^pin-name <pn2>)
  8805.     { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom1> ^max <vcom2> ^com <vmax1> ^layer { <hlay> <> <vlay> }) }
  8806.     { <h2> (horizontal ^status nil ^net-name nil ^min { <fmin> <= <vcom1> } ^max { <fmax> >= <vcom2> } ^com <vmax1> ^layer <vlay>) }
  8807.   - (vertical ^min < <vmax1> ^max >= <vmax1> ^com { > <vcom1> < <vcom2> })
  8808.   -->
  8809.     (remove <h2>)
  8810.     (modify <h1> ^net-name nil ^pin-name nil ^min-net nil ^max-net nil)
  8811.     (make (substr <h2> 1 inf) ^max <vcmo1> ^max-net nil)
  8812.     (make (substr <h2> 1 inf) ^min <vcpo2> ^min-net nil)
  8813.     (make (substr <h1> 1 inf) ^layer <vlay>)
  8814. )
  8815.  
  8816. (p p373
  8817.     (move-via <nn> <lay> <x> <y>)
  8818.     (horizontal ^min <x> ^max <garb1> ^com <y> ^layer <lay> ^min-net <nn> ^max-net <garb2>)
  8819.   -->
  8820.     (modify 2 ^min-net nil)
  8821. )
  8822.  
  8823. (p p374
  8824.     (move-via <nn> <lay> <x> <y>)
  8825.     (vertical ^min <y> ^max <garb1> ^com <x> ^layer <lay> ^min-net <nn> ^max-net <garb2>)
  8826.   -->
  8827.     (modify 2 ^min-net nil)
  8828. )
  8829.  
  8830. (p p375
  8831.     (move-via <nn> <lay> <x> <y>)
  8832.     (horizontal ^min <garb1> ^max <x> ^com <y> ^layer <lay> ^min-net <garb2> ^max-net <nn>)
  8833.   -->
  8834.     (modify 2 ^max-net nil)
  8835. )
  8836.  
  8837. (p p376
  8838.     (move-via <nn> <lay> <x> <y>)
  8839.     (vertical ^min <garb1> ^max <y> ^com <x> ^layer <lay> ^min-net <garb2> ^max-net <nn>)
  8840.   -->
  8841.     (modify 2 ^max-net nil)
  8842. )
  8843.  
  8844. (p start-dummy
  8845.     (start)
  8846.   -->
  8847.     (write (crlf) | Dummy START, do "loadwm" from "kuh.tmp".| (crlf))
  8848.  
  8849.  
  8850.  
  8851. (make layer-info    ^layer-name metal    ^layer-order 2)
  8852. (make layer-info    ^layer-name poly    ^layer-order 1)
  8853. (make channel    ^channel-bottom-left-x 0    ^channel-bottom-left-y 0    ^channel-top-right-x 13    ^channel-top-right-y 5    ^channel-width 5    ^channel-length 13    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 12    ^no-of-bottom-pins 12)
  8854. (make last-row    4    3)
  8855. (make last-col    12    11)
  8856. (make pin    ^net-name 3    ^external-pin-name 1    ^pin-x 1    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 35    ^external-net-name 3)
  8857. (make pin    ^net-name 1    ^external-pin-name 2    ^pin-x 2    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 34    ^external-net-name 1)
  8858. (make pin    ^net-name 5    ^external-pin-name 3    ^pin-x 3    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 33    ^external-net-name 5)
  8859. (make pin    ^net-name 3    ^external-pin-name 4    ^pin-x 4    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 32    ^external-net-name 3)
  8860. (make pin    ^net-name 5    ^external-pin-name 5    ^pin-x 5    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 31    ^external-net-name 5)
  8861. (make pin    ^net-name 2    ^external-pin-name 6    ^pin-x 6    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 30    ^external-net-name 2)
  8862. (make pin    ^net-name 6    ^external-pin-name 7    ^pin-x 7    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 29    ^external-net-name 6)
  8863. (make pin    ^net-name 8    ^external-pin-name 8    ^pin-x 8    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 28    ^external-net-name 8)
  8864. (make pin    ^net-name 9    ^external-pin-name 9    ^pin-x 9    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 27    ^external-net-name 9)
  8865. (make pin    ^net-name 8    ^external-pin-name 10    ^pin-x 10    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 26    ^external-net-name 8)
  8866. (make pin    ^net-name 7    ^external-pin-name 11    ^pin-x 11    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 25    ^external-net-name 7)
  8867. (make pin    ^net-name 9    ^external-pin-name 12    ^pin-x 12    ^pin-y 0    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side bottom    ^pin-name 24    ^external-net-name 9)
  8868. (make pin    ^net-name 2    ^external-pin-name 13    ^pin-x 1    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 6    ^external-net-name 2)
  8869. (make pin    ^net-name 1    ^external-pin-name 14    ^pin-x 2    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 7    ^external-net-name 1)
  8870. (make pin    ^net-name 4    ^external-pin-name 15    ^pin-x 3    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 8    ^external-net-name 4)
  8871. (make pin    ^net-name 5    ^external-pin-name 16    ^pin-x 4    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 9    ^external-net-name 5)
  8872. (make pin    ^net-name 1    ^external-pin-name 17    ^pin-x 5    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 10    ^external-net-name 1)
  8873. (make pin    ^net-name 6    ^external-pin-name 18    ^pin-x 6    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 11    ^external-net-name 6)
  8874. (make pin    ^net-name 7    ^external-pin-name 19    ^pin-x 7    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 12    ^external-net-name 7)
  8875. (make pin    ^net-name 10    ^external-pin-name 20    ^pin-x 8    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 13    ^external-net-name 10)
  8876. (make pin    ^net-name 4    ^external-pin-name 21    ^pin-x 9    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 14    ^external-net-name 4)
  8877. (make pin    ^net-name 9    ^external-pin-name 22    ^pin-x 10    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 15    ^external-net-name 9)
  8878. (make pin    ^net-name 10    ^external-pin-name 23    ^pin-x 11    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 16    ^external-net-name 10)
  8879. (make pin    ^net-name 10    ^external-pin-name 24    ^pin-x 12    ^pin-y 5    ^pin-layer poly    ^pin-layer-constraint fixed    ^pin-channel-side top    ^pin-name 17    ^external-net-name 10)
  8880. (make net    ^net-name 3    ^parent-name 3    ^net-no-of-pins 2    ^net-left-x 1    ^net-left-y 0    ^net-right-x 4    ^net-right-y 0    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 0    ^no-of-bottom-pins 2    ^left-most-pin-name 35    ^right-most-pin-name 32    ^bottom-most-pin-name 35    ^top-most-pin-name 35    ^external-net-name 3)
  8881. (make to-be-routed    ^net-name 3    ^no-of-attached-pins 1)
  8882. (make included    3    35)
  8883. (make net    ^net-name 1    ^parent-name 1    ^net-no-of-pins 3    ^net-left-x 2    ^net-left-y 0    ^net-right-x 5    ^net-right-y 5    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 2    ^no-of-bottom-pins 1    ^left-most-pin-name 34    ^right-most-pin-name 10    ^bottom-most-pin-name 34    ^top-most-pin-name 7    ^external-net-name 1)
  8884. (make to-be-routed    ^net-name 1    ^no-of-attached-pins 1)
  8885. (make included    1    34)
  8886. (make net    ^net-name 5    ^parent-name 5    ^net-no-of-pins 3    ^net-left-x 3    ^net-left-y 0    ^net-right-x 5    ^net-right-y 5    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 1    ^no-of-bottom-pins 2    ^left-most-pin-name 33    ^right-most-pin-name 31    ^bottom-most-pin-name 33    ^top-most-pin-name 9    ^external-net-name 5)
  8887. (make to-be-routed    ^net-name 5    ^no-of-attached-pins 1)
  8888. (make included    5    33)
  8889. (make net    ^net-name 2    ^parent-name 2    ^net-no-of-pins 2    ^net-left-x 1    ^net-left-y 0    ^net-right-x 6    ^net-right-y 5    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 1    ^no-of-bottom-pins 1    ^left-most-pin-name 6    ^right-most-pin-name 30    ^bottom-most-pin-name 30    ^top-most-pin-name 6    ^external-net-name 2)
  8890. (make to-be-routed    ^net-name 2    ^no-of-attached-pins 1)
  8891. (make included    2    30)
  8892. (make net    ^net-name 6    ^parent-name 6    ^net-no-of-pins 2    ^net-left-x 6    ^net-left-y 0    ^net-right-x 7    ^net-right-y 5    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 1    ^no-of-bottom-pins 1    ^left-most-pin-name 11    ^right-most-pin-name 29    ^bottom-most-pin-name 29    ^top-most-pin-name 11    ^external-net-name 6)
  8893. (make to-be-routed    ^net-name 6    ^no-of-attached-pins 1)
  8894. (make included    6    29)
  8895. (make net    ^net-name 8    ^parent-name 8    ^net-no-of-pins 2    ^net-left-x 8    ^net-left-y 0    ^net-right-x 10    ^net-right-y 0    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 0    ^no-of-bottom-pins 2    ^left-most-pin-name 28    ^right-most-pin-name 26    ^bottom-most-pin-name 28    ^top-most-pin-name 28    ^external-net-name 8)
  8896. (make to-be-routed    ^net-name 8    ^no-of-attached-pins 1)
  8897. (make included    8    28)
  8898. (make net    ^net-name 9    ^parent-name 9    ^net-no-of-pins 3    ^net-left-x 9    ^net-left-y 0    ^net-right-x 12    ^net-right-y 5    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 1    ^no-of-bottom-pins 2    ^left-most-pin-name 27    ^right-most-pin-name 24    ^bottom-most-pin-name 27    ^top-most-pin-name 15    ^external-net-name 9)
  8899. (make to-be-routed    ^net-name 9    ^no-of-attached-pins 1)
  8900. (make included    9    27)
  8901. (make net    ^net-name 7    ^parent-name 7    ^net-no-of-pins 2    ^net-left-x 7    ^net-left-y 0    ^net-right-x 11    ^net-right-y 5    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 1    ^no-of-bottom-pins 1    ^left-most-pin-name 12    ^right-most-pin-name 25    ^bottom-most-pin-name 25    ^top-most-pin-name 12    ^external-net-name 7)
  8902. (make to-be-routed    ^net-name 7    ^no-of-attached-pins 1)
  8903. (make included    7    25)
  8904. (make net    ^net-name 4    ^parent-name 4    ^net-no-of-pins 2    ^net-left-x 3    ^net-left-y 5    ^net-right-x 9    ^net-right-y 5    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 2    ^no-of-bottom-pins 0    ^left-most-pin-name 8    ^right-most-pin-name 14    ^bottom-most-pin-name 8    ^top-most-pin-name 8    ^external-net-name 4)
  8905. (make to-be-routed    ^net-name 4    ^no-of-attached-pins 1)
  8906. (make included    4    8)
  8907. (make net    ^net-name 10    ^parent-name 10    ^net-no-of-pins 3    ^net-left-x 8    ^net-left-y 5    ^net-right-x 12    ^net-right-y 5    ^no-of-left-pins 0    ^no-of-right-pins 0    ^no-of-top-pins 3    ^no-of-bottom-pins 0    ^left-most-pin-name 13    ^right-most-pin-name 17    ^bottom-most-pin-name 13    ^top-most-pin-name 13    ^external-net-name 10)
  8908. (make to-be-routed    ^net-name 10    ^no-of-attached-pins 1)
  8909. (make included    10    13)
  8910. (make vertical-layer    poly    24)
  8911. (make horizontal-layer    metal    0)
  8912. (make congestion    ^coordinate 0    ^direction row    ^no-of-nets 12    ^como -1)
  8913. (make congestion    ^coordinate 1    ^direction row    ^no-of-nets 12    ^como 0)
  8914. (make congestion    ^coordinate 2    ^direction row    ^no-of-nets 6    ^como 1)
  8915. (make congestion    ^coordinate 3    ^direction row    ^no-of-nets 6    ^como 2)
  8916. (make congestion    ^coordinate 4    ^direction row    ^no-of-nets 12    ^como 3)
  8917. (make congestion    ^coordinate 5    ^direction row    ^no-of-nets 12    ^como 4)
  8918. (make congestion    ^coordinate 0    ^direction col    ^no-of-nets 0    ^como -1)
  8919. (make congestion    ^coordinate 1    ^direction col    ^no-of-nets 2    ^como 0)
  8920. (make congestion    ^coordinate 2    ^direction col    ^no-of-nets 3    ^como 1)
  8921. (make congestion    ^coordinate 3    ^direction col    ^no-of-nets 5    ^como 2)
  8922. (make congestion    ^coordinate 4    ^direction col    ^no-of-nets 5    ^como 3)
  8923. (make congestion    ^coordinate 5    ^direction col    ^no-of-nets 4    ^como 4)
  8924. (make congestion    ^coordinate 6    ^direction col    ^no-of-nets 3    ^como 5)
  8925. (make congestion    ^coordinate 7    ^direction col    ^no-of-nets 3    ^como 6)
  8926. (make congestion    ^coordinate 8    ^direction col    ^no-of-nets 4    ^como 7)
  8927. (make congestion    ^coordinate 9    ^direction col    ^no-of-nets 5    ^como 8)
  8928. (make congestion    ^coordinate 10    ^direction col    ^no-of-nets 4    ^como 9)
  8929. (make congestion    ^coordinate 11    ^direction col    ^no-of-nets 3    ^como 10)
  8930. (make congestion    ^coordinate 12    ^direction col    ^no-of-nets 2    ^como 11)
  8931. (make congestion    ^coordinate 13    ^direction col    ^no-of-nets 0    ^como 12)
  8932. (make horizontal    ^compo 3    ^com 2    ^min 1    ^max 12    ^commo 1    ^layer metal)
  8933. (make horizontal    ^compo 3    ^com 2    ^min 1    ^max 12    ^commo 1    ^layer poly)
  8934. (make horizontal    ^compo 4    ^com 3    ^min 1    ^max 12    ^commo 2    ^layer metal)
  8935. (make horizontal    ^compo 4    ^com 3    ^min 1    ^max 12    ^commo 2    ^layer poly)
  8936. (make vertical    ^compo 3    ^com 2    ^min 1    ^max 4    ^commo 1    ^layer metal)
  8937. (make vertical    ^compo 3    ^com 2    ^min 1    ^max 4    ^commo 1    ^layer poly    ^min-net 1    ^max-net 1)
  8938. (make vertical    ^compo 4    ^com 3    ^min 1    ^max 4    ^commo 2    ^layer metal)
  8939. (make vertical    ^compo 4    ^com 3    ^min 1    ^max 4    ^commo 2    ^layer poly    ^min-net 5    ^max-net 4)
  8940. (make vertical    ^compo 5    ^com 4    ^min 1    ^max 4    ^commo 3    ^layer metal)
  8941. (make vertical    ^compo 5    ^com 4    ^min 1    ^max 4    ^commo 3    ^layer poly    ^min-net 3    ^max-net 5)
  8942. (make vertical    ^compo 6    ^com 5    ^min 1    ^max 4    ^commo 4    ^layer metal)
  8943. (make vertical    ^compo 6    ^com 5    ^min 1    ^max 4    ^commo 4    ^layer poly    ^min-net 5    ^max-net 1)
  8944. (make vertical    ^compo 7    ^com 6    ^min 1    ^max 4    ^commo 5    ^layer metal)
  8945. (make vertical    ^compo 7    ^com 6    ^min 1    ^max 4    ^commo 5    ^layer poly    ^min-net 2    ^max-net 6)
  8946. (make vertical    ^compo 8    ^com 7    ^min 1    ^max 4    ^commo 6    ^layer metal)
  8947. (make vertical    ^compo 8    ^com 7    ^min 1    ^max 4    ^commo 6    ^layer poly    ^min-net 6    ^max-net 7)
  8948. (make vertical    ^compo 9    ^com 8    ^min 1    ^max 4    ^commo 7    ^layer metal)
  8949. (make vertical    ^compo 9    ^com 8    ^min 1    ^max 4    ^commo 7    ^layer poly    ^min-net 8    ^max-net 10)
  8950. (make vertical    ^compo 10    ^com 9    ^min 1    ^max 4    ^commo 8    ^layer metal)
  8951. (make vertical    ^compo 10    ^com 9    ^min 1    ^max 4    ^commo 8    ^layer poly    ^min-net 9    ^max-net 4)
  8952. (make vertical    ^compo 11    ^com 10    ^min 1    ^max 4    ^commo 9    ^layer metal)
  8953. (make vertical    ^compo 11    ^com 10    ^min 1    ^max 4    ^commo 9    ^layer poly    ^min-net 8    ^max-net 9)
  8954. (make vertical    ^compo 12    ^com 11    ^min 1    ^max 4    ^commo 10    ^layer metal)
  8955. (make vertical    ^compo 12    ^com 11    ^min 1    ^max 4    ^commo 10    ^layer poly    ^min-net 7    ^max-net 10)
  8956. (make horizontal    ^compo 2    ^com 1    ^min 1    ^max 12    ^commo 0    ^layer metal)
  8957. (make horizontal    ^compo 5    ^com 4    ^min 11    ^max 12    ^commo 3    ^layer poly    ^min-net 10    ^max-net 10)
  8958. (make horizontal    ^compo 5    ^com 4    ^min 1    ^max 12    ^commo 3    ^layer metal)
  8959. (make vertical    ^compo 2    ^com 1    ^min 1    ^max 4    ^commo 0    ^layer poly    ^min-net 3    ^max-net 2)
  8960. (make vertical    ^compo 2    ^com 1    ^min 1    ^max 4    ^commo 0    ^layer metal)
  8961. (make vertical    ^compo 13    ^com 12    ^min 1    ^max 4    ^commo 11    ^layer poly    ^min-net 9    ^max-net 10)
  8962. (make vertical    ^compo 13    ^com 12    ^min 1    ^max 4    ^commo 11    ^layer metal)
  8963. (make vertical    ^net-name 3    ^compo 2    ^com 1    ^min 0    ^max 1    ^commo 0    ^layer poly    ^pin-name 35)
  8964. (make ff    ^net-name 3    ^grid-layer poly    ^grid-x 1    ^grid-y 1    ^came-from south    ^pin-name 35)
  8965. (make vertical    ^net-name 1    ^compo 3    ^com 2    ^min 0    ^max 1    ^commo 1    ^layer poly    ^pin-name 34)
  8966. (make ff    ^net-name 1    ^grid-layer poly    ^grid-x 2    ^grid-y 1    ^came-from south    ^pin-name 34)
  8967. (make vertical    ^net-name 5    ^compo 4    ^com 3    ^min 0    ^max 1    ^commo 2    ^layer poly    ^pin-name 33)
  8968. (make ff    ^net-name 5    ^grid-layer poly    ^grid-x 3    ^grid-y 1    ^came-from south    ^pin-name 33)
  8969. (make vertical    ^net-name 3    ^compo 5    ^com 4    ^min 0    ^max 1    ^commo 3    ^layer poly    ^pin-name 32)
  8970. (make ff    ^net-name 3    ^grid-layer poly    ^grid-x 4    ^grid-y 1    ^came-from south    ^pin-name 32)
  8971. (make vertical    ^net-name 5    ^compo 6    ^com 5    ^min 0    ^max 1    ^commo 4    ^layer poly    ^pin-name 31)
  8972. (make ff    ^net-name 5    ^grid-layer poly    ^grid-x 5    ^grid-y 1    ^came-from south    ^pin-name 31)
  8973. (make vertical    ^net-name 2    ^compo 7    ^com 6    ^min 0    ^max 1    ^commo 5    ^layer poly    ^pin-name 30)
  8974. (make ff    ^net-name 2    ^grid-layer poly    ^grid-x 6    ^grid-y 1    ^came-from south    ^pin-name 30)
  8975. (make vertical    ^net-name 6    ^compo 8    ^com 7    ^min 0    ^max 1    ^commo 6    ^layer poly    ^pin-name 29)
  8976. (make ff    ^net-name 6    ^grid-layer poly    ^grid-x 7    ^grid-y 1    ^came-from south    ^pin-name 29)
  8977. (make vertical    ^net-name 8    ^compo 9    ^com 8    ^min 0    ^max 1    ^commo 7    ^layer poly    ^pin-name 28)
  8978. (make ff    ^net-name 8    ^grid-layer poly    ^grid-x 8    ^grid-y 1    ^came-from south    ^pin-name 28)
  8979. (make vertical    ^net-name 9    ^compo 10    ^com 9    ^min 0    ^max 1    ^commo 8    ^layer poly    ^pin-name 27)
  8980. (make ff    ^net-name 9    ^grid-layer poly    ^grid-x 9    ^grid-y 1    ^came-from south    ^pin-name 27)
  8981. (make vertical    ^net-name 8    ^compo 11    ^com 10    ^min 0    ^max 1    ^commo 9    ^layer poly    ^pin-name 26)
  8982. (make ff    ^net-name 8    ^grid-layer poly    ^grid-x 10    ^grid-y 1    ^came-from south    ^pin-name 26)
  8983. (make vertical    ^net-name 7    ^compo 12    ^com 11    ^min 0    ^max 1    ^commo 10    ^layer poly    ^pin-name 25)
  8984. (make ff    ^net-name 7    ^grid-layer poly    ^grid-x 11    ^grid-y 1    ^came-from south    ^pin-name 25)
  8985. (make vertical    ^net-name 9    ^compo 13    ^com 12    ^min 0    ^max 1    ^commo 11    ^layer poly    ^pin-name 24)
  8986. (make ff    ^net-name 9    ^grid-layer poly    ^grid-x 12    ^grid-y 1    ^came-from south    ^pin-name 24)
  8987. (make vertical    ^net-name 2    ^compo 2    ^com 1    ^min 4    ^max 5    ^commo 0    ^layer poly    ^pin-name 6)
  8988. (make ff    ^net-name 2    ^grid-layer poly    ^grid-x 1    ^grid-y 4    ^came-from north    ^pin-name 6)
  8989. (make vertical    ^net-name 1    ^compo 3    ^com 2    ^min 4    ^max 5    ^commo 1    ^layer poly    ^pin-name 7)
  8990. (make ff    ^net-name 1    ^grid-layer poly    ^grid-x 2    ^grid-y 4    ^came-from north    ^pin-name 7)
  8991. (make vertical    ^net-name 4    ^compo 4    ^com 3    ^min 4    ^max 5    ^commo 2    ^layer poly    ^pin-name 8)
  8992. (make ff    ^net-name 4    ^grid-layer poly    ^grid-x 3    ^grid-y 4    ^came-from north    ^pin-name 8)
  8993. (make vertical    ^net-name 5    ^compo 5    ^com 4    ^min 4    ^max 5    ^commo 3    ^layer poly    ^pin-name 9)
  8994. (make ff    ^net-name 5    ^grid-layer poly    ^grid-x 4    ^grid-y 4    ^came-from north    ^pin-name 9)
  8995. (make vertical    ^net-name 1    ^compo 6    ^com 5    ^min 4    ^max 5    ^commo 4    ^layer poly    ^pin-name 10)
  8996. (make ff    ^net-name 1    ^grid-layer poly    ^grid-x 5    ^grid-y 4    ^came-from north    ^pin-name 10)
  8997. (make vertical    ^net-name 6    ^compo 7    ^com 6    ^min 4    ^max 5    ^commo 5    ^layer poly    ^pin-name 11)
  8998. (make ff    ^net-name 6    ^grid-layer poly    ^grid-x 6    ^grid-y 4    ^came-from north    ^pin-name 11)
  8999. (make vertical    ^net-name 7    ^compo 8    ^com 7    ^min 4    ^max 5    ^commo 6    ^layer poly    ^pin-name 12)
  9000. (make ff    ^net-name 7    ^grid-layer poly    ^grid-x 7    ^grid-y 4    ^came-from north    ^pin-name 12)
  9001. (make vertical    ^net-name 10    ^compo 9    ^com 8    ^min 4    ^max 5    ^commo 7    ^layer poly    ^pin-name 13)
  9002. (make ff    ^net-name 10    ^grid-layer poly    ^grid-x 8    ^grid-y 4    ^came-from north    ^pin-name 13)
  9003. (make vertical    ^net-name 4    ^compo 10    ^com 9    ^min 4    ^max 5    ^commo 8    ^layer poly    ^pin-name 14)
  9004. (make ff    ^net-name 4    ^grid-layer poly    ^grid-x 9    ^grid-y 4    ^came-from north    ^pin-name 14)
  9005. (make vertical    ^net-name 9    ^compo 11    ^com 10    ^min 4    ^max 5    ^commo 9    ^layer poly    ^pin-name 15)
  9006. (make ff    ^net-name 9    ^grid-layer poly    ^grid-x 10    ^grid-y 4    ^came-from north    ^pin-name 15)
  9007. (make vertical    ^net-name 10    ^compo 12    ^com 11    ^min 4    ^max 5    ^commo 10    ^layer poly    ^pin-name 16)
  9008. (make ff    ^net-name 10    ^grid-layer poly    ^grid-x 11    ^grid-y 4    ^came-from north    ^pin-name 16)
  9009. (make vertical    ^net-name 10    ^compo 13    ^com 12    ^min 4    ^max 5    ^commo 11    ^layer poly    ^pin-name 17)
  9010. (make ff    ^net-name 10    ^grid-layer poly    ^grid-x 12    ^grid-y 4    ^came-from north    ^pin-name 17)
  9011. (make horizontal-s    ^net-name 3    ^top-count 0    ^com 1    ^min 1    ^max 4    ^bot-count 2    ^id 0    ^sum 2    ^difference -2    ^absolute 2)
  9012. (make vertical-s    ^net-name 1    ^top-count 1    ^com 2    ^min 1    ^max 4    ^bot-count 0    ^id 1    ^sum 1    ^difference 1    ^absolute 1)
  9013. (make horizontal-s    ^net-name 1    ^top-count 2    ^com 4    ^min 2    ^max 5    ^bot-count 1    ^id 2    ^sum 3    ^difference 1    ^absolute 1)
  9014. (make horizontal-s    ^net-name 5    ^top-count 1    ^com 1    ^min 3    ^max 5    ^bot-count 2    ^id 3    ^sum 3    ^difference -1    ^absolute 1)
  9015. (make vertical-s    ^net-name 5    ^top-count 1    ^com 4    ^min 1    ^max 4    ^bot-count 1    ^id 4    ^sum 2    ^difference 0    ^absolute 0)
  9016. (make vertical-s    ^net-name 2    ^top-count 1    ^com 1    ^min 1    ^max 4    ^bot-count 1    ^id 5    ^sum 2    ^difference 0    ^absolute 0)
  9017. (make horizontal-s    ^net-name 2    ^top-count 1    ^com 1    ^min 1    ^max 6    ^bot-count 1    ^id 6    ^sum 2    ^difference 0    ^absolute 0)
  9018. (make vertical-s    ^net-name 6    ^top-count 1    ^com 6    ^min 1    ^max 4    ^bot-count 0    ^id 7    ^sum 1    ^difference 1    ^absolute 1)
  9019. (make horizontal-s    ^net-name 6    ^top-count 1    ^com 1    ^min 6    ^max 7    ^bot-count 1    ^id 8    ^sum 2    ^difference 0    ^absolute 0)
  9020. (make horizontal-s    ^net-name 8    ^top-count 0    ^com 1    ^min 8    ^max 10    ^bot-count 2    ^id 9    ^sum 2    ^difference -2    ^absolute 2)
  9021. (make horizontal-s    ^net-name 9    ^top-count 1    ^com 1    ^min 9    ^max 12    ^bot-count 2    ^id 10    ^sum 3    ^difference -1    ^absolute 1)
  9022. (make vertical-s    ^net-name 9    ^top-count 1    ^com 10    ^min 1    ^max 4    ^bot-count 1    ^id 11    ^sum 2    ^difference 0    ^absolute 0)
  9023. (make vertical-s    ^net-name 7    ^top-count 1    ^com 7    ^min 1    ^max 4    ^bot-count 0    ^id 12    ^sum 1    ^difference 1    ^absolute 1)
  9024. (make horizontal-s    ^net-name 7    ^top-count 1    ^com 1    ^min 7    ^max 11    ^bot-count 1    ^id 13    ^sum 2    ^difference 0    ^absolute 0)
  9025. (make horizontal-s    ^net-name 4    ^top-count 2    ^com 4    ^min 3    ^max 9    ^bot-count 0    ^id 14    ^sum 2    ^difference 2    ^absolute 2)
  9026. (make horizontal-s    ^net-name 10    ^top-count 3    ^com 4    ^min 8    ^max 12    ^bot-count 0    ^id 15    ^sum 3    ^difference 3    ^absolute 3)
  9027. (make branch-no    1000)
  9028. (make context    ^present separate)
  9029. )
  9030.