home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p078 / 3.img / NETFORMS.PLB / CADNETIX.CF < prev    next >
Encoding:
Text File  |  1991-10-14  |  6.3 KB  |  281 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 can contain up to 17 characters
  10.  *      - Module Names can contain up to 15 characters
  11.  *      - Reference Strings plus Pin Numbers can contain up to 12 characters
  12.  *      - Node Names can contain up to 16 characters
  13.  *      - Node Numbers are not checked for length
  14.  *      - Pin Numbers can contain up to 3 digits
  15.  */
  16.  
  17. int sw_L;
  18.  
  19. int net_items;
  20. int len;
  21.  
  22. /*-----------------------*/
  23.  
  24. Initialize()
  25. {
  26.     WriteString(0, "Creating Netlist...");
  27.     WriteCrLf(0);
  28.  
  29.     AddSymbol("Error");
  30.     SetSymbol(Error, "E");
  31.  
  32.     /* used to pad their standard symbol namesakes with spaces */
  33.     AddSymbol("PartNameStr");
  34.     AddSymbol("ModuleNameStr");
  35.     AddSymbol("ReferenceStr");
  36.  
  37.     AddSymbol("NetNumberStr");
  38.     AddSymbol("SignalNameStr");
  39.  
  40.     SetNumberWidth(1);
  41.  
  42.     sw_L = SwitchIsSet("L");
  43. }
  44.  
  45. /*-----------------------*/
  46.  
  47. WriteHeader()
  48. {
  49.     WriteString(1, "PARTS LIST");
  50.     WriteCrLf(1);
  51.     WriteCrLf(1);
  52.  
  53.     while (LoadInstance())
  54.     {
  55.         CopySymbol(PartName, PartNameStr);
  56.         PadSpaces(PartNameStr, 17);
  57.         len = SymbolLength(PartName);
  58.         if (len > 17)
  59.         {
  60.             WriteString(0, "ERROR: Name is too long '");
  61.             WriteSymbol(0, PartName);
  62.             WriteString(0, "', truncated to ");
  63.             WriteSymbol(0, PartNameStr);
  64.             WriteCrLf(0);
  65.  
  66.             SetSymbol(ExitType, "E");
  67.         }
  68.         WriteSymbol(1, PartNameStr);
  69.         WriteString(1, " ");
  70.  
  71.         /* if the ModuleName is empty, then use the PartName again */
  72.         len = SymbolLength(ModuleName);
  73.         if (len > 0)
  74.         {
  75.             CopySymbol(ModuleName, ModuleNameStr);
  76.             PadSpaces(ModuleNameStr, 15);
  77.  
  78.             if (len > 15)
  79.             {
  80.                 WriteString(0, "ERROR: Name is too long '");
  81.                 WriteSymbol(0, ModuleName);
  82.                 WriteString(0, "', truncated to ");
  83.                 WriteSymbol(0, ModuleNameStr);
  84.                 WriteCrLf(0);
  85.  
  86.                 SetSymbol(ExitType, "E");
  87.             }
  88.             WriteSymbol(1, ModuleNameStr);
  89.         }
  90.         else
  91.         {
  92.             PadSpaces(PartNameStr, 15);
  93.             WriteSymbol(1, PartNameStr);
  94.         }
  95.         WriteString(1, " ");
  96.  
  97.         WriteSymbol(1, ReferenceString);
  98.         WriteCrLf(1);
  99.     }
  100.  
  101.     WriteString(1, "EOS");
  102.     WriteCrLf(1);
  103.     WriteString(1, "NET LIST");
  104.     WriteCrLf(1);
  105.     WriteCrLf(1);
  106. }
  107.  
  108. /*-----------------------*/
  109.  
  110. HandleNodeName()
  111. {
  112.     int i;
  113.  
  114.     net_items = 0;
  115.     CopySymbol(SignalNameString, SignalNameStr);
  116.  
  117.     i = GetStandardSymbol(TypeCode);
  118.     if (i == 'L')
  119.     {
  120.         if (sw_L == 0)
  121.         {
  122.             MakeLocalSignal("_");
  123.             CopySymbol(LocalSignal, SignalNameStr);
  124.         }
  125.     }
  126.  
  127.     len = SymbolLength(SignalNameStr);
  128.     if (len > 16)
  129.     {
  130.         WriteString(0, "WARNING: Name is too long '");
  131.         WriteSymbol(0, SignalNameStr);
  132.         WriteString(0, "', changed to NODE ");
  133.         WriteSymbol(0, NetNumber);
  134.         WriteCrLf(0);
  135.  
  136.         i = CompareSymbol(ExitType, Error);
  137.         if (i != 0) { SetSymbol(ExitType, "W"); }
  138.  
  139.         i = 'N';
  140.     }
  141.  
  142.     if (i == 'L')
  143.     {
  144.         WriteString(1, "NODENAME ");
  145.         PadSpaces(SignalNameStr, 16);
  146.         WriteSymbol(1, SignalNameStr);
  147.         WriteString(1, " $");
  148.     }
  149.     if (i == 'P')
  150.     {
  151.         WriteString(1, "NODENAME ");
  152.         PadSpaces(SignalNameStr, 16);
  153.         WriteSymbol(1, SignalNameStr);
  154.         WriteString(1, " $");
  155.     }
  156.     if (i == 'S')
  157.     {
  158.         WriteString(1, "NODENAME ");
  159.         PadSpaces(SignalNameStr, 16);
  160.         WriteSymbol(1, SignalNameStr);
  161.         WriteString(1, " $");
  162.     }
  163.     if (i == 'N')
  164.     {
  165.         WriteString(1, "NODE     ");
  166.         CopySymbol(NetNumber, NetNumberStr);
  167.         PadSpaces(NetNumberStr, 16);
  168.         WriteSymbol(1, NetNumberStr);
  169.         WriteString(1, " $");
  170.     }
  171.     if (i == 'U')
  172.     {
  173.         WriteString(1, "NODE     ");
  174.         CopySymbol(NetNumber, NetNumberStr);
  175.         PadSpaces(NetNumberStr, 16);
  176.         WriteSymbol(1, NetNumberStr);
  177.         WriteString(1, " $");
  178.     }
  179.     WriteCrLf(1);
  180.  
  181.     /* the leading 2 spaces for this net */
  182.     WriteString(1, "  ");
  183. }
  184.  
  185. /*-----------------------*/
  186.  
  187. WriteNet()
  188. {
  189.     int pin_num_len;
  190.     int ref_len;
  191.     int i;
  192.  
  193.     if (net_items == 4)
  194.     {
  195.         WriteString(1, "   $");
  196.         WriteCrLf(1);
  197.         WriteString(1, "  ");
  198.  
  199.         net_items = 0;
  200.     }
  201.     WriteString(1, "  ");
  202.  
  203.     /* the number of chars in the pin number */
  204.     pin_num_len = SymbolLength(PinNumberString);
  205.     /* the number of chars in the reference string */
  206.     ref_len = SymbolLength(ReferenceString);
  207.  
  208.     CopySymbol(ReferenceString, ReferenceStr);
  209.  
  210.     if (pin_num_len + ref_len > 11)
  211.     {
  212.         /* the two strings won't fit with one space between them */
  213.         WriteString(0, "ERROR: Reference plus Pin Number is too long '");
  214.         WriteSymbol(0, ReferenceString);
  215.         WriteString(0, "' and '");
  216.         WriteSymbol(0, PinNumberString);
  217.         WriteString(0, "'");
  218.         WriteCrLf(0);
  219.  
  220.         SetSymbol(ExitType, "E");
  221.  
  222.         if (pin_num_len == 1)
  223.         {
  224.             PadSpaces(ReferenceStr, 10);
  225.             ref_len = 10;
  226.         }
  227.         if (pin_num_len == 2)
  228.         {
  229.             PadSpaces(ReferenceStr, 9);
  230.             ref_len = 9;
  231.         }
  232.         if (pin_num_len == 3)
  233.         {
  234.             PadSpaces(ReferenceStr, 8);
  235.             ref_len = 8;
  236.         }
  237.         if (pin_num_len == 4)
  238.         {
  239.             PadSpaces(ReferenceStr, 7);
  240.             ref_len = 7;
  241.         }
  242.     }
  243.  
  244.     WriteSymbol(1, ReferenceStr);
  245.  
  246.     i = 12 - pin_num_len - ref_len;
  247.     while (i > 0)
  248.     {
  249.         WriteString(1, " ");
  250.         i = i - 1;
  251.     }
  252.     WriteSymbol(1, PinNumberString);
  253.  
  254.     net_items = net_items + 1;
  255. }
  256.  
  257. /*-----------------------*/
  258.  
  259. WriteNetEnding()
  260. {
  261.     WriteCrLf(1);
  262. }
  263.  
  264. /*-----------------------*/
  265.  
  266. ProcessFieldStrings()
  267. {
  268. }
  269.  
  270. /*-----------------------*/
  271.  
  272. WriteNetListEnd()
  273. {
  274.     WriteString(1, "EOS");
  275.     WriteCrLf(1);
  276.  
  277.     WriteString(0, "Done");
  278.     WriteCrLf(0);
  279. }
  280.  
  281.