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

  1. /*
  2.     /L Do not append sheet number to labels
  3.  */
  4.  
  5. /*  VERSION="1.10   14-OCT-91"
  6.  *      - Added Version message
  7.  *
  8.  *  Capacities:
  9.  *      - Part Names are not checked for length
  10.  *      - Module Names are not checked for length
  11.  *      - Reference Strings are not checked for length
  12.  *      - Node Names are not checked for length
  13.  *      - Node Numbers are limited to 5 digits (plus the leading 'N')
  14.  *      - Pin Numbers are not checked for length
  15.  *
  16.  *  Characters:
  17.  *      - All characters are legal for Part Names, Module Names, and Reference Strings
  18.  *      - Legal characters for Node Names are {'+-_$', '0..9', 'a..z', 'A..Z'}
  19.  */
  20.  
  21. int sw_L;
  22.  
  23. int net_items;
  24. int len;
  25.  
  26. /*-----------------------*/
  27.  
  28. Initialize()
  29. {
  30.     WriteString(0, "Creating Netlist...");
  31.     WriteCrLf(0);
  32.  
  33.     AddSymbol("ModuleNameStr");
  34.     AddSymbol("PrevModuleNameStr");
  35.     AddSymbol("PrevPartNameStr");
  36.     AddSymbol("SignalNameStr");
  37.     AddSymbol("Str");
  38.  
  39.     SetCharSet("+-_$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
  40.     SetNumberWidth(5);
  41.  
  42.     WriteString(1, "% ");
  43.     CopySymbol(TitleString, Str);
  44.     PadSpaces(Str, 46);
  45.     WriteSymbol(1, Str);
  46.     WriteString(1, "Revised: ");
  47.     WriteSymbol(1, DateString);
  48.     WriteCrLf(1);
  49.     WriteString(1, "% ");
  50.     CopySymbol(DocumentNumber, Str);
  51.     PadSpaces(Str, 46);
  52.     WriteSymbol(1, Str);
  53.     WriteString(1, "Revision: ");
  54.     WriteSymbol(1, Revision);
  55.     WriteCrLf(1);
  56.     WriteString(1, "% ");
  57.     WriteSymbol(1, Organization);
  58.     WriteCrLf(1);
  59.     WriteString(1, "% ");
  60.     WriteSymbol(1, AddressLine1);
  61.     WriteCrLf(1);
  62.     WriteString(1, "% ");
  63.     WriteSymbol(1, AddressLine2);
  64.     WriteCrLf(1);
  65.     WriteString(1, "% ");
  66.     WriteSymbol(1, AddressLine3);
  67.     WriteCrLf(1);
  68.     WriteString(1, "% ");
  69.     WriteSymbol(1, AddressLine4);
  70.     WriteCrLf(1);
  71.  
  72.     sw_L = SwitchIsSet("L");
  73. }
  74.  
  75. /*-----------------------*/
  76.  
  77. WriteHeader()
  78. {
  79.     int first;
  80.     int temp;
  81.  
  82.     WriteString(1, "BOARD = ORCAD.PCB;");
  83.     WriteCrLf(1);
  84.     WriteCrLf(1);
  85.  
  86.     WriteString(1, "PARTS");
  87.     WriteCrLf(1);
  88.  
  89.     /* first pass through, there is no previous module defined */
  90.     first = 1;
  91.     while (LoadInstance())
  92.     {
  93.         /* use the Part Name if there is no ModuleName */
  94.         len = SymbolLength(ModuleName);
  95.         if (len < 1)
  96.         {
  97.             CopySymbol(PartName, ModuleNameStr);
  98.         }
  99.         else
  100.         {
  101.             CopySymbol(ModuleName, ModuleNameStr);
  102.         }
  103.  
  104.         /* if same as previous, then just continue */
  105.         temp = CompareSymbol(ModuleNameStr, PrevModuleNameStr);
  106.         if (first == 1) { temp = 1; }
  107.  
  108.         CopySymbol(ModuleNameStr, PrevModuleNameStr);
  109.         if (temp == 0)
  110.         {
  111.             WriteString(1, ",   % ");
  112.             WriteSymbol(1, PrevPartNameStr);
  113.             WriteCrLf(1);
  114.             WriteString(1, "                  ");
  115.         }
  116.         else
  117.         {
  118.             if (first == 0)
  119.             {
  120.                 WriteString(1, ";   % ");
  121.                 WriteSymbol(1, PrevPartNameStr);
  122.                 WriteCrLf(1);
  123.             }
  124.  
  125.             len = SymbolLength(ModuleNameStr);
  126.             if (len < 15)
  127.             {
  128.                 PadSpaces(ModuleNameStr, 15);
  129.             }
  130.             WriteSymbol(1, ModuleNameStr);
  131.             WriteString(1, " = ");
  132.         }
  133.  
  134.         WriteSymbol(1, ReferenceString);
  135.  
  136.         CopySymbol(PartName, PrevPartNameStr);
  137.         first = 0;
  138.     }
  139.     if (first == 0)
  140.     {
  141.         /* at least one part was written */
  142.         WriteString(1, ";   % ");
  143.         WriteSymbol(1, PrevPartNameStr);
  144.         WriteCrLf(1);
  145.     }
  146.     WriteCrLf(1);
  147.  
  148.     WriteString(1, "NETS");
  149.     WriteCrLf(1);
  150.     WriteCrLf(1);
  151. }
  152.  
  153. /*-----------------------*/
  154.  
  155. HandleNodeName()
  156. {
  157.     int i;
  158.     int legal;
  159.  
  160.     net_items = 0;
  161.     i = GetStandardSymbol(TypeCode);
  162.  
  163.     CopySymbol(SignalNameString, SignalNameStr);
  164.     legal = SymbolInCharSet(SignalNameStr);
  165.     if (legal != 1)
  166.     {
  167.         WriteString(0, "WARNING: Name contains illegal characters '");
  168.         WriteSymbol(0, SignalNameStr);
  169.         WriteString(0, "', changed to N");
  170.         WriteSymbol(0, NetNumber);
  171.         WriteCrLf(0);
  172.  
  173.         SetSymbol(ExitType, "W");
  174.         i = 'N';
  175.     }
  176.  
  177.     if (i == 'L')
  178.     {
  179.         if (sw_L == 0)
  180.         {
  181.             SetNumberWidth(1);
  182.             MakeLocalSignal("_");
  183.             SetNumberWidth(5);
  184.             CopySymbol(LocalSignal, SignalNameStr);
  185.         }
  186.     }
  187.  
  188.     len = SymbolLength(SignalNameStr);
  189.     if (len > 8)
  190.     {
  191.         WriteString(0, "WARNING: Name is too long '");
  192.         WriteSymbol(0, SignalNameStr);
  193.         WriteString(0, "', changed to N");
  194.         WriteSymbol(0, NetNumber);
  195.         WriteCrLf(0);
  196.  
  197.         SetSymbol(ExitType, "W");
  198.         i = 'N';
  199.     }
  200.  
  201.     if (i == 'L')
  202.     {
  203.         PadSpaces(SignalNameStr, 8);
  204.         WriteSymbol(1, SignalNameStr);
  205.         WriteString(1, "  =");
  206.     }
  207.     if (i == 'P')
  208.     {
  209.         PadSpaces(SignalNameStr, 8);
  210.         WriteSymbol(1, SignalNameStr);
  211.         WriteString(1, "  =");
  212.     }
  213.     if (i == 'S')
  214.     {
  215.         PadSpaces(SignalNameStr, 8);
  216.         WriteSymbol(1, SignalNameStr);
  217.         WriteString(1, "  =");
  218.     }
  219.     if (i == 'N')
  220.     {
  221.         WriteString(1, "N");
  222.         WriteSymbol(1, NetNumber);
  223.         WriteString(1, "    =");
  224.     }
  225.     if (i == 'U')
  226.     {
  227.         WriteString(1, "N");
  228.         WriteSymbol(1, NetNumber);
  229.         WriteString(1, "    =");
  230.     }
  231. }
  232.  
  233. /*-----------------------*/
  234.  
  235. WriteNet()
  236. {
  237.     if (net_items == 4)
  238.     {
  239.         WriteCrLf(1);
  240.         WriteString(1, "           ");
  241.  
  242.         net_items = 0;
  243.     }
  244.     WriteString(1, " ");
  245.  
  246.     WriteSymbol(1, ReferenceString);
  247.     WriteString(1, "/");
  248.     WriteSymbol(1, PinNumberString);
  249.  
  250.     net_items = net_items + 1;
  251. }
  252.  
  253. /*-----------------------*/
  254.  
  255. WriteNetEnding()
  256. {
  257.     WriteString(1, " ;");
  258.     WriteCrLf(1);
  259. }
  260.  
  261. /*-----------------------*/
  262.  
  263. ProcessFieldStrings()
  264. {
  265. }
  266.  
  267. /*-----------------------*/
  268.  
  269. WriteNetListEnd()
  270. {
  271.     WriteString(0, "Done");
  272.     WriteCrLf(0);
  273. }
  274.  
  275.  
  276.