home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p078 / 3.img / NETFORMS.PLB / HILO.CF < prev    next >
Encoding:
Text File  |  1991-10-14  |  6.5 KB  |  294 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 limited to 14 characters
  16.  *      - Node Numbers are limited to 5 digits (plus the leading 'N')
  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.     AddSymbol("SignalNameStr");
  37.     AddSymbol("PinNumberStr");
  38.     AddSymbol("Str");
  39.  
  40.     WriteString(1, "** ");
  41.     CopySymbol(TitleString, Str);
  42.     PadSpaces(Str, 46);
  43.     WriteSymbol(1, Str);
  44.     WriteString(1, "Revised: ");
  45.     WriteSymbol(1, DateString);
  46.     WriteCrLf(1);
  47.     WriteString(1, "** ");
  48.     CopySymbol(DocumentNumber, Str);
  49.     PadSpaces(Str, 46);
  50.     WriteSymbol(1, Str);
  51.     WriteString(1, "Revision: ");
  52.     WriteSymbol(1, Revision);
  53.     WriteCrLf(1);
  54.     WriteString(1, "** ");
  55.     WriteSymbol(1, Organization);
  56.     WriteCrLf(1);
  57.     WriteString(1, "** ");
  58.     WriteSymbol(1, AddressLine1);
  59.     WriteCrLf(1);
  60.     WriteString(1, "** ");
  61.     WriteSymbol(1, AddressLine2);
  62.     WriteCrLf(1);
  63.     WriteString(1, "** ");
  64.     WriteSymbol(1, AddressLine3);
  65.     WriteCrLf(1);
  66.     WriteString(1, "** ");
  67.     WriteSymbol(1, AddressLine4);
  68.     WriteCrLf(1);
  69.  
  70.     WriteString(1, "CCT ORCAD (");
  71.     WriteCrLf(1);
  72.     WriteString(1, "** Please put your circuit interface definition here");
  73.     WriteCrLf(1);
  74.     WriteString(1, "          );");
  75.     WriteCrLf(1);
  76.  
  77.     SetCharSet("0123456789");
  78.     SetNumberWidth(5);
  79.  
  80.     sw_L = SwitchIsSet("L");
  81.     sw_I = SwitchIsSet("I");
  82. }
  83.  
  84. /*-----------------------*/
  85.  
  86. WriteHeader()
  87. {
  88.     CreatePartDataBase();
  89. }
  90.  
  91. /*-----------------------*/
  92.  
  93. HandleNodeName()
  94. {
  95.     int i;
  96.  
  97.     CopySymbol(SignalNameString, SignalNameStr);
  98.  
  99.     i = GetStandardSymbol(TypeCode);
  100.     if (i == 'L')
  101.     {   
  102.         if (sw_L == 0)
  103.         {
  104.             SetNumberWidth(1);
  105.             MakeLocalSignal("$");
  106.             SetNumberWidth(5);
  107.             CopySymbol(LocalSignal, SignalNameStr);
  108.         }
  109.     }
  110.  
  111.     i = SymbolLength(SignalNameStr);
  112.     if (i > 14)
  113.     {
  114.         WriteString(0, "WARNING: Name is too long '");
  115.         WriteSymbol(0, SignalNameStr);
  116.         WriteString(0, "', changed to N");
  117.         WriteSymbol(0, NetNumber);
  118.         WriteCrLf(0);
  119.  
  120.         SetSymbol(ExitType, "W");
  121.     }
  122.  
  123.     AddSignalName();
  124. }
  125.  
  126. /*-----------------------*/
  127.  
  128. WriteNet()
  129. {
  130.     RecordNode();
  131. }
  132.  
  133. /*-----------------------*/
  134.  
  135. WriteNetEnding()
  136. {
  137. }
  138.  
  139. /*-----------------------*/
  140.  
  141. ProcessFieldStrings()
  142. {
  143. }
  144.  
  145. /*-----------------------*/
  146.  
  147. SetCurrentPinNumber()
  148. {
  149.     int i;
  150.     int len;
  151.     int ch;
  152.  
  153.     currpin = 0;
  154.     CopySymbol(PinNumberString, PinNumberStr);
  155.  
  156.     i = SymbolInCharSet(PinNumberStr);
  157.     if (i == 1) {
  158.         len = SymbolLength(PinNumberString);
  159.  
  160.         i = 0;
  161.         do {
  162.             ch = GetSymbolChar(i, PinNumberStr);
  163.             currpin = (currpin * 10) + (ch - 48);
  164.  
  165.             i = i + 1;
  166.         } while (i < len);
  167.     }
  168. }
  169.  
  170. /*-----------------------*/
  171.  
  172. WriteNetListEnd()
  173. {
  174.     int i;
  175.     int first;
  176.     int len;
  177.     int net;
  178.  
  179.     net = 0;
  180.     SetFirst(ALL);
  181.     do {
  182.         CopySymbol(ReferenceString, Str);
  183.         LoadFieldString(Str);
  184.  
  185.         len = SymbolLength(ModuleName);
  186.         if (len > 0)
  187.         {
  188.             WriteSymbol(1, ModuleName);
  189.         }
  190.         else
  191.         {
  192.             WriteSymbol(1, PartName);
  193.         }
  194.         WriteCrLf(1);
  195.  
  196.         WriteSymbol(1, ReferenceString);
  197.         WriteString(1, " (");
  198.         WriteCrLf(1);
  199.  
  200.         prevpin = 0;
  201.         first = 1;
  202.         do {
  203.             /* write out any pins between the previous one and the current one */
  204.             SetCurrentPinNumber();
  205.  
  206.             prevpin = prevpin + 1;
  207.             if (currpin > prevpin) {
  208.                 if (currpin != 0) {
  209.                     while (currpin > prevpin) {
  210.                         if (first != 1)
  211.                         {
  212.                             WriteString(1, ",");
  213.                             WriteCrLf(1);
  214.                         }
  215.                         WriteString(1, "     ");
  216.                         
  217.                         prevpin = prevpin + 1;
  218.                         first = 0;
  219.                     }
  220.                 }
  221.             }
  222.             prevpin = currpin;
  223.  
  224.             if (first != 1)
  225.             {
  226.                 WriteString(1, ",");
  227.                 WriteCrLf(1);
  228.             }
  229.             WriteString(1, "     ");
  230.  
  231.             CopySymbol(SignalNameString, SignalNameStr);
  232.  
  233.             i = GetStandardSymbol(TypeCode);
  234.             if (i == 'L')
  235.             {
  236.                 if (sw_L == 0)
  237.                 {
  238.                     SetNumberWidth(1);
  239.                     MakeLocalSignal("$");
  240.                     SetNumberWidth(5);
  241.                     CopySymbol(LocalSignal, SignalNameStr);
  242.                 }
  243.             }
  244.  
  245.             len = SymbolLength(SignalNameStr);
  246.             if (len > 14) { i = 'N'; }
  247.  
  248.             if (i == 'L')
  249.             {
  250.                 WriteSymbol(1, SignalNameStr);
  251.             }
  252.             if (i == 'P')
  253.             {
  254.                 WriteSymbol(1, SignalNameStr);
  255.             }
  256.             if (i == 'S')
  257.             {
  258.                 WriteSymbol(1, SignalNameStr);
  259.             }
  260.             if (i == 'N')
  261.             {
  262.                 WriteString(1, "N");
  263.                 WriteSymbol(1, NetNumber);
  264.             }
  265.             if (i == 'U')
  266.             {
  267.                 if (sw_I == 1)
  268.                 {
  269.                     net = net + 1;
  270.                     WriteString(1, "UN");
  271.                     WriteInteger(1, net);
  272.                 }
  273.             }
  274.  
  275.             first = 0;
  276.         } while (SetNext(NODES));
  277.  
  278.         WriteCrLf(1);
  279.         WriteString(1, "     );");
  280.         WriteCrLf(1);
  281.         WriteCrLf(1);
  282.  
  283.     } while (SetNext(ALL));
  284.  
  285.     WriteCrLf(1);
  286.     WriteString(1, ".");
  287.     WriteCrLf(1);
  288.  
  289.     WriteString(0, "Done");
  290.     WriteCrLf(0);
  291. }
  292.  
  293.  
  294.