home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p078 / 3.img / NETFORMS.PLB / CASE.CF < prev    next >
Encoding:
Text File  |  1991-10-14  |  4.8 KB  |  221 lines

  1. /*
  2.     /L Do not append sheet number to labels
  3.     /I Include unconnected pins
  4.  */
  5.  
  6. /*  VERSION="1.10   14-OCT-91"
  7.  *      - Added /I switch to allow unconnected pins to be given a net
  8.  *      - Added code for outputting missing pins on a part
  9.  *      - Added Version message
  10.  *
  11.  *  Capacities:
  12.  *      - Part Names are not checked for length
  13.  *      - Module Names are not checked for length
  14.  *      - Reference Strings are not checked for length
  15.  *      - Node Names are not checked for length
  16.  *      - Node Numbers are limited to 5 digits (plus the leading 'X')
  17.  *      - Pin Numbers are not checked for length
  18.  *
  19.  *  Characters:
  20.  *      - All ASCII keyboard characters are legal
  21.  */
  22.  
  23. int prevpin;
  24. int currpin;
  25.  
  26. int sw_L;
  27. int sw_I;
  28.  
  29. /*-----------------------*/
  30.  
  31. Initialize()
  32. {
  33.     WriteString(0, "Creating Netlist...");
  34.     WriteCrLf(0);
  35.  
  36.     WriteString(1, "ASSERTIONS=OFF;VERSION=400;LOCATION=LOC;");
  37.     WriteCrLf(1);
  38.  
  39.     AddSymbol("Str");
  40.     AddSymbol("PinNumberStr");
  41.  
  42.     SetCharSet("0123456789");
  43.     SetNumberWidth(5);
  44.  
  45.     sw_L = SwitchIsSet("L");
  46.     sw_I = SwitchIsSet("I");
  47. }
  48.  
  49. /*-----------------------*/
  50.  
  51. WriteHeader()
  52. {
  53.     CreatePartDataBase();
  54. }
  55.  
  56. /*-----------------------*/
  57.  
  58. HandleNodeName()
  59. {
  60.     AddSignalName();
  61. }
  62.  
  63. /*-----------------------*/
  64.  
  65. WriteNet()
  66. {
  67.     RecordNode();
  68. }
  69.  
  70. /*-----------------------*/
  71.  
  72. WriteNetEnding()
  73. {
  74. }
  75.  
  76. /*-----------------------*/
  77.  
  78. ProcessFieldStrings()
  79. {
  80. }
  81.  
  82. /*-----------------------*/
  83.  
  84. SetCurrentPinNumber()
  85. {
  86.     int i;
  87.     int len;
  88.     int ch;
  89.  
  90.     currpin = 0;
  91.     CopySymbol(PinNumberString, PinNumberStr);
  92.  
  93.     i = SymbolInCharSet(PinNumberStr);
  94.     if (i == 1) {
  95.         len = SymbolLength(PinNumberString);
  96.  
  97.         i = 0;
  98.         do {
  99.             ch = GetSymbolChar(i, PinNumberStr);
  100.             currpin = (currpin * 10) + (ch - 48);
  101.  
  102.             i = i + 1;
  103.         } while (i < len);
  104.     }
  105. }
  106.  
  107. /*-----------------------*/
  108.  
  109. WriteNetListEnd()
  110. {
  111.     int i;
  112.     int len;
  113.     int net;
  114.     
  115.     net = 0;
  116.     SetFirst(ALL);
  117.     do {
  118.         CopySymbol(ReferenceString, Str);
  119.         LoadFieldString(Str);
  120.  
  121.         WriteString(1, " [SIZE=1;TIMES=1;LOC=(");
  122.         WriteSymbol(1, ReferenceString);
  123.         WriteString(1, ");PLOC=");
  124.         WriteSymbol(1, ReferenceString);
  125.         WriteString(1, ";SHAPE=");
  126.  
  127.         len = SymbolLength(ModuleName);
  128.         if (len > 0)
  129.             { WriteSymbol(1, ModuleName); }
  130.         else
  131.             { WriteSymbol(1, PartName); }
  132.         WriteString(1, "]");
  133.         WriteCrLf(1);
  134.  
  135.         prevpin = 0;
  136.         do {
  137.             /* write out any pins between the previous one and the current one */
  138.             SetCurrentPinNumber();
  139.  
  140.             prevpin = prevpin + 1;
  141.             if (currpin > prevpin) {
  142.                 if (currpin != 0) {
  143.                     SetNumberWidth(1);
  144.  
  145.                     while (currpin > prevpin) {
  146.                         WriteString(1, " ");
  147.                         WriteInteger(1, prevpin);
  148.                         WriteString(1, "=NC;");
  149.                         WriteCrLf(1);
  150.  
  151.                         prevpin = prevpin + 1;
  152.                     }
  153.  
  154.                     SetNumberWidth(5);
  155.                 }
  156.             }
  157.             prevpin = currpin;
  158.  
  159.             WriteString(1, " ");
  160.             WriteSymbol(1, PinNumberString);
  161.             WriteString(1, "=");
  162.  
  163.             i = GetStandardSymbol(TypeCode);
  164.             if (i == 'L')
  165.             {
  166.                 if (sw_L == 0)
  167.                 {
  168.                     SetNumberWidth(1);
  169.                     MakeLocalSignal("_");
  170.                     SetNumberWidth(5);
  171.                     WriteSymbol(1, LocalSignal);
  172.                 }
  173.                 else
  174.                 {
  175.                     WriteSymbol(1, SignalNameString);
  176.                 }
  177.             }
  178.             if (i == 'P')
  179.             {
  180.                 WriteSymbol(1, SignalNameString);
  181.             }
  182.             if (i == 'S')
  183.             {
  184.                 WriteSymbol(1, SignalNameString);
  185.             }
  186.             if (i == 'N')
  187.             {
  188.                 WriteString(1, "X");
  189.                 WriteSymbol(1, NetNumber);
  190.             }
  191.             if (i == 'U')
  192.             {
  193.                 if (sw_I == 1)
  194.                 {
  195.                     net = net + 1;
  196.                     WriteString(1, "UN");
  197.                     WriteInteger(1, net);
  198.                 }
  199.                 else
  200.                 {
  201.                     WriteString(1, "NC");
  202.                 }
  203.             }
  204.             WriteString(1, ";");
  205.             WriteCrLf(1);
  206.         } while (SetNext(NODES));
  207.  
  208.         WriteString(1, " ;");
  209.         WriteCrLf(1);
  210.  
  211.     } while (SetNext(ALL));
  212.  
  213.     WriteString(1, ";");
  214.     WriteCrLf(1);
  215.  
  216.     WriteString(0, "Done");
  217.     WriteCrLf(0);
  218. }
  219.  
  220.  
  221.