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

  1. /*
  2.     /2
  3.     /L Do not append sheet number to labels
  4.  */
  5.  
  6. /*  VERSION="1.10   14-OCT-91"
  7.  *      - Corrected handling of /L switch when more than 5 pins in a net
  8.  *      - Added Version message
  9.  *
  10.  *  Capacities:
  11.  *      - Part Names are limited to 19 characters
  12.  *      - Module Names are limited to 19 characters
  13.  *      - Reference Strings are limited to 19 characters
  14.  *      - Node Names are not checked for length
  15.  *      - Node Numbers are limited to 5 digits (plus the leading 'N')
  16.  *      - Pin Numbers are not checked for length
  17.  *
  18.  *  Characters:
  19.  *      - All ASCII keyboard characters are legal
  20.  */
  21.  
  22. int sw_L;
  23. int net_items;
  24. int len;
  25.  
  26. /*-----------------------*/
  27.  
  28. Initialize()
  29. {
  30.     WriteString(0, "Creating Netlist...");
  31.     WriteCrLf(0);
  32.  
  33.     /* used to pad their standard symbol namesakes with spaces */
  34.     AddSymbol("PartNameStr");
  35.     AddSymbol("ModuleNameStr");
  36.     AddSymbol("ReferenceStr");
  37.  
  38.     SetNumberWidth(5);
  39.  
  40.     sw_L = SwitchIsSet("L");
  41. }
  42.  
  43. /*-----------------------*/
  44.  
  45. WriteHeader()
  46. {
  47.     WriteString(2, "# OrCAD Formatted Netlist for MENTOR Board Station V6");
  48.     WriteCrLf(2);
  49.     WriteString(2, "# Reference         .... Value Field         Module Field");
  50.     WriteCrLf(2);
  51.  
  52.     while (LoadInstance())
  53.     {
  54.         CopySymbol(ReferenceString, ReferenceStr);
  55.         PadSpaces(ReferenceStr, 19);
  56.         len = SymbolLength(ReferenceStr);
  57.         if (len > 19)
  58.         {
  59.             WriteString(0, "ERROR: Reference is too long '");
  60.             WriteSymbol(0, ReferenceString);
  61.             WriteString(0, "', truncated to ");
  62.             WriteSymbol(0, ReferenceStr);
  63.             WriteCrLf(0);
  64.  
  65.             SetSymbol(ExitType, "E");
  66.         }
  67.         WriteSymbol(2, ReferenceStr);
  68.         WriteString(2, " PART ");
  69.  
  70.         CopySymbol(PartName, PartNameStr);
  71.         PadSpaces(PartNameStr, 19);
  72.         len = SymbolLength(PartName);
  73.         if (len > 19)
  74.         {
  75.             WriteString(0, "ERROR: Name is too long '");
  76.             WriteSymbol(0, PartName);
  77.             WriteString(0, "', truncated to ");
  78.             WriteSymbol(0, PartNameStr);
  79.             WriteCrLf(0);
  80.  
  81.             SetSymbol(ExitType, "E");
  82.         }
  83.         WriteSymbol(2, PartNameStr);
  84.         WriteString(2, " ");
  85.  
  86.         /* if the ModuleName is empty, then use the PartName */
  87.         len = SymbolLength(ModuleName);
  88.         if (len > 0)
  89.         {
  90.             CopySymbol(ModuleName, ModuleNameStr);
  91.             PadSpaces(ModuleNameStr, 19);
  92.  
  93.             if (len > 19)
  94.             {
  95.                 WriteString(0, "ERROR: Name is too long '");
  96.                 WriteSymbol(0, ModuleName);
  97.                 WriteString(0, "', truncated to ");
  98.                 WriteSymbol(0, ModuleNameStr);
  99.                 WriteCrLf(0);
  100.  
  101.                 SetSymbol(ExitType, "E");
  102.             }
  103.             WriteSymbol(2, ModuleNameStr);
  104.         }
  105.         else
  106.         {
  107.             len = SymbolLength(PartName);
  108.             if (len > 19)
  109.             {
  110.                 WriteSymbol(2, PartNameStr);
  111.             }
  112.             else
  113.             {
  114.                 WriteSymbol(2, PartName);
  115.             }
  116.         }
  117.  
  118.         WriteCrLf(2);
  119.     }
  120. }
  121.  
  122. /*-----------------------*/
  123.  
  124. HandleNodeName()
  125. {
  126.     int i;
  127.  
  128.     net_items = 0;
  129.     WriteString(1, "NET '");
  130.  
  131.     i = GetStandardSymbol(TypeCode);
  132.     if (i == 'L')
  133.     {
  134.         if (sw_L == 0)
  135.         {
  136.             SetNumberWidth(1);
  137.             MakeLocalSignal("_");
  138.             WriteSymbol(1, LocalSignal);
  139.             SetNumberWidth(5);
  140.         }
  141.         else
  142.         {
  143.             WriteSymbol(1, SignalNameString);
  144.         }
  145.     }
  146.     if (i == 'P')
  147.     {
  148.         WriteSymbol(1, SignalNameString);
  149.     }
  150.     if (i == 'S')
  151.     {
  152.         WriteSymbol(1, SignalNameString);
  153.     }
  154.     if (i == 'N')
  155.     {
  156.         WriteString(1, "N");
  157.         WriteSymbol(1, NetNumber);
  158.     }
  159.     if (i == 'U')
  160.     {
  161.         WriteString(1, "N");
  162.         WriteSymbol(1, NetNumber);
  163.     }
  164.     WriteString(1, "'");
  165. }
  166.  
  167. /*-----------------------*/
  168.  
  169. WriteNet()
  170. {
  171.     int i;
  172.  
  173.     if (net_items == 5)
  174.     {
  175.         WriteCrLf(1);
  176.         WriteString(1, "NET '");
  177.  
  178.         i = GetStandardSymbol(TypeCode);
  179.         if (i == 'L')
  180.         {
  181.             if (sw_L == 0)
  182.                 { WriteSymbol(1, LocalSignal); }
  183.             else
  184.                 { WriteSymbol(1, SignalNameString); }
  185.         }
  186.         if (i == 'P')
  187.         {
  188.             WriteSymbol(1, SignalNameString);
  189.         }
  190.         if (i == 'S')
  191.         {
  192.             WriteSymbol(1, SignalNameString);
  193.         }
  194.         if (i == 'U')
  195.         {
  196.             WriteString(1, "N");
  197.             WriteSymbol(1, NetNumber);
  198.         }
  199.         if (i == 'N')
  200.         {
  201.             WriteString(1, "N");
  202.             WriteSymbol(1, NetNumber);
  203.         }
  204.         WriteString(1, "' ");
  205.  
  206.         net_items = 0;
  207.     }
  208.     else
  209.     {
  210.         WriteString(1, " ");
  211.     }
  212.  
  213.     WriteSymbol(1, ReferenceString);
  214.     WriteString(1, "-");
  215.     WriteSymbol(1, PinNumberString);
  216.  
  217.     net_items = net_items + 1;
  218. }
  219.  
  220. /*-----------------------*/
  221.  
  222. WriteNetEnding()
  223. {
  224.     WriteCrLf(1);
  225. }
  226.  
  227. /*-----------------------*/
  228.  
  229. ProcessFieldStrings()
  230. {
  231. }
  232.  
  233. /*-----------------------*/
  234.  
  235. WriteNetListEnd()
  236. {
  237.     WriteString(0, "Done");
  238.     WriteCrLf(0);
  239. }
  240.  
  241.  
  242.