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

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