home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p078 / 3.img / NETFORMS.PLB / PCAD.CF < prev    next >
Encoding:
Text File  |  1991-10-14  |  6.4 KB  |  284 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.  *      - Simplified header (ENVIRONMENT and DETAIL)
  9.  *      - Added code for outputting missing pins on a part
  10.  *      - Added Version message
  11.  *
  12.  *  Capacities:
  13.  *      - Part Names are not checked for length
  14.  *      - Module Names are not checked for length
  15.  *      - Reference Strings are not checked for length
  16.  *      - Node Names are limited 8 characters
  17.  *      - Node Numbers are limited to 5 digits (plus the leading 'NET')
  18.  *      - Pin Numbers are not checked for length
  19.  *
  20.  *  Characters:
  21.  *      - Names are not checked for legal characters
  22.  */
  23.  
  24. int prevpin;
  25. int currpin;
  26.  
  27. int sw_L;
  28. int sw_I;
  29.  
  30. /*-----------------------*/
  31.  
  32. Initialize()
  33. {
  34.     WriteString(0, "Creating Netlist...");
  35.     WriteCrLf(0);
  36.  
  37.     AddSymbol("SignalNameStr");
  38.     AddSymbol("PinNumberStr");
  39.     AddSymbol("Str");
  40.  
  41.     WriteString(1, "{COMPONENT ORCAD.PCB");
  42.     WriteCrLf(1);
  43.     WriteString(1, " {ENVIRONMENT LAYS.PCB}");
  44.     WriteCrLf(1);
  45.     WriteString(1, "  {PDIFvrev 1.30}");
  46.     WriteCrLf(1);
  47.     WriteString(1, "  {DETAIL");
  48.     WriteCrLf(1);
  49.     WriteString(1, "   {SUBCOMP");
  50.     WriteCrLf(1);
  51.  
  52.     SetCharSet("0123456789");
  53.     SetNumberWidth(5);
  54.  
  55.     sw_L = SwitchIsSet("L");
  56.     sw_I = SwitchIsSet("I");
  57. }
  58.  
  59. /*-----------------------*/
  60.  
  61. WriteHeader()
  62. {
  63.     CreatePartDataBase();
  64. }
  65.  
  66. /*-----------------------*/
  67.  
  68. HandleNodeName()
  69. {
  70.     int i;
  71.  
  72.     CopySymbol(SignalNameString, SignalNameStr);
  73.  
  74.     i = GetStandardSymbol(TypeCode);
  75.     if (i == 'L')
  76.     {
  77.         if (sw_L == 0)
  78.         {
  79.             SetNumberWidth(1);
  80.             MakeLocalSignal("_");
  81.             SetNumberWidth(5);
  82.             CopySymbol(LocalSignal, SignalNameStr);
  83.         }
  84.     }
  85.  
  86.     i = SymbolLength(SignalNameStr);
  87.     if (i > 14)
  88.     {
  89.         WriteString(0, "WARNING: Name is too long '");
  90.         WriteSymbol(0, SignalNameStr);
  91.         WriteString(0, "', changed to N");
  92.         WriteSymbol(0, NetNumber);
  93.         WriteCrLf(0);
  94.  
  95.         SetSymbol(ExitType, "W");
  96.     }
  97.  
  98.     AddSignalName();
  99. }
  100.  
  101. /*-----------------------*/
  102.  
  103. WriteNet()
  104. {
  105.     RecordNode();
  106. }
  107.  
  108. /*-----------------------*/
  109.  
  110. WriteNetEnding()
  111. {
  112. }
  113.  
  114. /*-----------------------*/
  115.  
  116. ProcessFieldStrings()
  117. {
  118. }
  119.  
  120. /*-----------------------*/
  121.  
  122. SetCurrentPinNumber()
  123. {
  124.     int i;
  125.     int len;
  126.     int ch;
  127.  
  128.     currpin = 0;
  129.     CopySymbol(PinNumberString, PinNumberStr);
  130.  
  131.     i = SymbolInCharSet(PinNumberStr);
  132.     if (i == 1) {
  133.         len = SymbolLength(PinNumberString);
  134.  
  135.         i = 0;
  136.         do {
  137.             ch = GetSymbolChar(i, PinNumberStr);
  138.             currpin = (currpin * 10) + (ch - 48);
  139.  
  140.             i = i + 1;
  141.         } while (i < len);
  142.     }
  143. }
  144.  
  145. /*-----------------------*/
  146.  
  147. WriteNetListEnd()
  148. {
  149.     int i;
  150.     int len;
  151.     int net;
  152.  
  153.     net = 0;
  154.     SetFirst(ALL);
  155.     do {
  156.         CopySymbol(ReferenceString, Str);
  157.         LoadFieldString(Str);
  158.  
  159.         WriteString(1, "{I ");
  160.  
  161.         len = SymbolLength(ModuleName);
  162.         if (len > 0)
  163.         {
  164.             WriteSymbol(1, ModuleName);
  165.         }
  166.         else
  167.         {
  168.             WriteSymbol(1, PartName);
  169.         }
  170.         WriteString(1, ".PRT ");
  171.  
  172.         WriteSymbol(1, ReferenceString);
  173.         WriteCrLf(1);
  174.  
  175.         WriteString(1, "{CN");
  176.         WriteCrLf(1);
  177.  
  178.         prevpin = 0;
  179.         do {
  180.             /* write out any pins between the previous one and the current one */
  181.             SetCurrentPinNumber();
  182.  
  183.             prevpin = prevpin + 1;
  184.             if (currpin > prevpin) {
  185.                 if (currpin != 0) {
  186.                     SetNumberWidth(0);
  187.  
  188.                     while (currpin > prevpin) {
  189.                         if (prevpin < 10000) { WriteString(1, " "); }
  190.                         if (prevpin < 1000)  { WriteString(1, " "); }
  191.                         if (prevpin < 100)   { WriteString(1, " "); }
  192.                         if (prevpin < 10)    { WriteString(1, " "); }
  193.  
  194.                         WriteInteger(1, prevpin);
  195.                         WriteString(1, " ?");
  196.                         WriteCrLf(1);
  197.  
  198.                         prevpin = prevpin + 1;
  199.                     }
  200.  
  201.                     SetNumberWidth(5);
  202.                 }
  203.             }
  204.             prevpin = currpin;
  205.  
  206.             len = SymbolLength(PinNumberString);
  207.             if (len == 0) { WriteString(1, "     "); }
  208.             if (len == 1) { WriteString(1, "    "); }
  209.             if (len == 2) { WriteString(1, "   "); }
  210.             if (len == 3) { WriteString(1, "  "); }
  211.             if (len == 4) { WriteString(1, " "); }
  212.             WriteSymbol(1, PinNumberString);
  213.             WriteString(1, " ");
  214.  
  215.             CopySymbol(SignalNameString, SignalNameStr);
  216.  
  217.             i = GetStandardSymbol(TypeCode);
  218.             if (i == 'L')
  219.             {
  220.                 if (sw_L == 0)
  221.                 {
  222.                     SetNumberWidth(1);
  223.                     MakeLocalSignal("_");
  224.                     SetNumberWidth(5);
  225.                     CopySymbol(LocalSignal, SignalNameStr);
  226.                 }
  227.             }
  228.  
  229.             len = SymbolLength(SignalNameStr);
  230.             if (len > 14) { i = 'N'; }
  231.  
  232.             if (i == 'L')
  233.             {
  234.                 WriteSymbol(1, SignalNameStr);
  235.             }
  236.             if (i == 'P')
  237.             {
  238.                 WriteSymbol(1, SignalNameStr);
  239.             }
  240.             if (i == 'S')
  241.             {
  242.                 WriteSymbol(1, SignalNameStr);
  243.             }
  244.             if (i == 'N')
  245.             {
  246.                 WriteString(1, "NET");
  247.                 WriteSymbol(1, NetNumber);
  248.             }
  249.             if (i == 'U')
  250.             {
  251.                 if (sw_I == 1)
  252.                 {
  253.                     net = net + 1;
  254.                     WriteString(1, "UN");
  255.                     WriteInteger(1, net);
  256.                 }
  257.                 else
  258.                 {
  259.                     WriteString(1, "?");
  260.                 }
  261.             }
  262.             WriteCrLf(1);
  263.         } while (SetNext(NODES));
  264.  
  265.         WriteString(1, "}");
  266.         WriteCrLf(1);
  267.         WriteString(1, "}");
  268.         WriteCrLf(1);
  269.  
  270.     } while (SetNext(ALL));
  271.  
  272.     WriteString(1, "}");
  273.     WriteCrLf(1);
  274.     WriteString(1, "}");
  275.     WriteCrLf(1);
  276.     WriteString(1, "}");
  277.     WriteCrLf(1);
  278.  
  279.     WriteString(0, "Done");
  280.     WriteCrLf(0);
  281. }
  282.  
  283.  
  284.