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

  1. /*
  2.     /L Do not append sheet number to labels
  3.     /N Suppress comments
  4.     /I Include unconnected pins
  5. */
  6.  
  7. /*  VERSION="1.10   14-OCT-91"
  8.  *      - Added /I switch to allow unconnected pins to be given a net
  9.  *      - Added 'unet' to make certain unconnected pins are in unique nets
  10.  *      - Added Version message
  11.  *      - Corrected int to unsigned comparison
  12.  *
  13.  *  Capacities:
  14.  *      - Part Names are not checked for length
  15.  *      - Module Names are not checked for length
  16.  *      - Reference Strings are not checked for length
  17.  *      - Node Names are not checked for length
  18.  *      - Pin Numbers are not checked for length
  19.  *
  20.  *  Characters:
  21.  *      - All ASCII keyboard characters are legal
  22.  */
  23.  
  24. int sw_L;
  25. int sw_N;
  26. int sw_I;
  27.  
  28. int ok;
  29. int unet;
  30.  
  31. /*-----------------------*/
  32.  
  33. Initialize()
  34. {
  35.     WriteString(0, "Creating Netlist...");
  36.     WriteCrLf(0);
  37.  
  38.     AddSymbol("PartNameStr");
  39.     AddSymbol("SignalNameStr");
  40.  
  41.     AddSymbol("OUT");
  42.     SetSymbol(OUT, "OUT");
  43.     AddSymbol("FBK");
  44.     SetSymbol(FBK, "FBK");
  45.  
  46.     SetNumberWidth(1);
  47.  
  48.     unet = 0;
  49.  
  50.     sw_L = SwitchIsSet("L");
  51.     sw_N = SwitchIsSet("N");
  52.     sw_I = SwitchIsSet("I");
  53. }
  54.  
  55. /*-----------------------*/
  56.  
  57. WriteHeader()
  58. {
  59.     AddSymbol("Str");
  60.  
  61.     CopySymbol(TitleString, Str);
  62.     PadSpaces(Str, 46);
  63.     WriteSymbol(1, Str);
  64.     WriteString(1, "Revised: ");
  65.     WriteSymbol(1, DateString);
  66.     WriteCrLf(1);
  67.     CopySymbol(DocumentNumber, Str);
  68.     PadSpaces(Str, 46);
  69.     WriteSymbol(1, Str);
  70.     WriteString(1, "Revision: ");
  71.     WriteSymbol(1, Revision);
  72.     WriteCrLf(1);
  73.     WriteSymbol(1, Organization);
  74.     WriteCrLf(1);
  75.     WriteSymbol(1, AddressLine1);
  76.     WriteCrLf(1);
  77.     WriteSymbol(1, AddressLine2);
  78.     WriteCrLf(1);
  79.     WriteSymbol(1, AddressLine3);
  80.     WriteCrLf(1);
  81.     WriteSymbol(1, AddressLine4);
  82.     WriteCrLf(1);
  83.     WriteCrLf(1);
  84.  
  85.     WriteString(1, "OPTIONS:");
  86.     WriteSymbol(1, AddressLine3);
  87.     WriteCrLf(1);
  88.     WriteString(1, "PART:");
  89.     WriteSymbol(1, AddressLine4);
  90.     WriteCrLf(1);
  91.     WriteCrLf(1);
  92.  
  93.     CreatePartDataBase();
  94. }
  95.  
  96. /*-----------------------*/
  97.  
  98. HandleNodeName()
  99. {
  100.     AddSignalName();
  101. }
  102.  
  103. /*-----------------------*/
  104.  
  105. WriteNet()
  106. {
  107.     RecordNode();
  108. }
  109.  
  110. /*-----------------------*/
  111.  
  112. WriteNetEnding()
  113. {
  114. }
  115.  
  116. /*-----------------------*/
  117.  
  118. ProcessFieldStrings()
  119. {
  120. }
  121.  
  122. /*-----------------------*/
  123.  
  124. HandleInputs()
  125. {
  126.     int i;
  127.  
  128.     /* list the input module ports */
  129.     WriteString(1, "INPUTS:");
  130.     WriteCrLf(1);
  131.     SetFirst(SIGNALS);
  132.     do {
  133.         i = GetStandardSymbol(TypeCode);
  134.         if (i == 'P')
  135.         {
  136.             i = GetStandardSymbol(SignalType);
  137.             if (i == 2)
  138.             {
  139.                 WriteString(1, "    ");
  140.                 WriteSymbol(1, SignalNameString);
  141.                 WriteCrLf(1);
  142.             }
  143.         }
  144.     } while (SetNext(SIGNALS));
  145.     WriteCrLf(1);
  146. }
  147.  
  148. /*-----------------------*/
  149.  
  150. HandleOutputs()
  151. {
  152.     int i;
  153.  
  154.     /* list the output module ports */
  155.     WriteString(1, "OUTPUTS:");
  156.     WriteCrLf(1);
  157.     SetFirst(SIGNALS);
  158.     do {
  159.         i = GetStandardSymbol(TypeCode);
  160.         if (i == 'P')
  161.         {
  162.             i = GetStandardSymbol(SignalType);
  163.             if (i == 1)
  164.             {
  165.                 WriteString(1, "    ");
  166.                 WriteSymbol(1, SignalNameString);
  167.                 WriteCrLf(1);
  168.             }
  169.         }
  170.     } while (SetNext(SIGNALS));
  171.     WriteCrLf(1);
  172. }
  173.  
  174. /*-----------------------*/
  175.  
  176. WriteNodeInfo()
  177. {
  178.     int i;
  179.     int pos;
  180.  
  181.     i = GetStandardSymbol(TypeCode);
  182.     if (i == 'L')
  183.     {
  184.         if (sw_L == 0)
  185.         {
  186.             MakeLocalSignal(".");
  187.             WriteSymbol(1, LocalSignal);
  188.         }
  189.         else
  190.         {
  191.             WriteSymbol(1, SignalNameString);
  192.         }
  193.     }
  194.     if (i == 'P')
  195.     {
  196.         CopySymbol(SignalNameString, SignalNameStr);
  197.  
  198.         /* signal may appear as 'asdfas@##' -- remove the '@' and beyond */
  199.         i = 64;
  200.         pos = FindSymbolChar(i, SignalNameStr);
  201.         if (pos != -1) { i = 0; PutSymbolChar(pos, i, SignalNameStr); }
  202.  
  203.         WriteSymbol(1, SignalNameStr);
  204.     }
  205.     if (i == 'S')
  206.     {
  207.         WriteSymbol(1, SignalNameString);
  208.     }
  209.     if (i == 'N')
  210.     {
  211.         WriteString(1, ".");
  212.         WriteSymbol(1, NetNumber);
  213.     }
  214.     if (i == 'U')
  215.     {
  216.         if (sw_I == 0)
  217.         {
  218.             WriteString(0, "ERROR: Pin ");
  219.             WriteSymbol(0, PinNumberString);
  220.             WriteString(0, " on Reference '");
  221.             WriteSymbol(0, ReferenceString);
  222.             WriteString(0, "' is unconnected");
  223.             WriteCrLf(0);
  224.  
  225.             SetSymbol(ExitType, "E");
  226.         }
  227.  
  228.         unet = unet + 1;
  229.         WriteString(1, "UN");
  230.         WriteInteger(1, unet);
  231.     }
  232. }
  233.  
  234. /*-----------------------*/
  235.  
  236. PipeADF()
  237. {
  238.     ok = NextPipe();
  239.     if (ok == 1)
  240.     {
  241.         ok = IsKeyWord();
  242.         ok = 1 - ok;
  243.     }
  244.  
  245.     while (ok == 1)
  246.     {
  247.         WriteSymbol(1, PipeLine);
  248.         WriteCrLf(1);
  249.  
  250.         ok = NextPipe();
  251.         if (ok == 1)
  252.         {
  253.             ok = IsKeyWord();
  254.             ok = 1 - ok;
  255.         }
  256.     }
  257. }
  258.  
  259. /*-----------------------*/
  260.  
  261. WriteNetListEnd()
  262. {
  263.     int i;
  264.     int first;
  265.     int cnt;
  266.  
  267.     /* write the input ports */
  268.     HandleInputs();
  269.  
  270.     /* write the output ports */
  271.     HandleOutputs();
  272.  
  273.     /* list the network */
  274.     WriteString(1, "NETWORK:");
  275.     WriteCrLf(1);
  276.  
  277.     SetFirst(ALL);
  278.     cnt = 0;
  279.     do {
  280.         cnt = cnt + 1;
  281.  
  282.         first = 1;
  283.         do {
  284.             /* output signal if pin is named 'OUT' */
  285.             i = CompareSymbol(OUT, PinNameString);
  286.             if (i == 0)
  287.             {
  288.                 if (first == 0) { WriteString(1, ","); }
  289.                 WriteNodeInfo();
  290.  
  291.                 first = 0;
  292.             }
  293.         } while (SetNext(NODES));
  294.  
  295.         SetFirst(NODES);
  296.         do {
  297.             /* output signal if pin is named 'FBK' */
  298.             i = CompareSymbol(FBK, PinNameString);
  299.             if (i == 0)
  300.             {
  301.                 if (first == 0) { WriteString(1, ","); }
  302.                 WriteNodeInfo();
  303.  
  304.                 first = 0;
  305.             }
  306.         } while (SetNext(NODES));
  307.         if (first == 0) {WriteString(1, "="); }
  308.  
  309.         CopySymbol(PartName, PartNameStr);
  310.         ExceptionsFor("ADF", PartNameStr);
  311.         WriteSymbol(1, PartNameStr);
  312.  
  313.         WriteString(1, "(");
  314.  
  315.         SetFirst(NODES);
  316.         first = 1;
  317.         do {
  318.             i = CompareSymbol(OUT, PinNameString);
  319.             if (i != 0)
  320.             {
  321.                 i = CompareSymbol(FBK, PinNameString);
  322.                 if (i != 0)
  323.                 {
  324.                     /* any symbol that is not 'OUT' or 'FBK' */
  325.                     if (first == 0) { WriteString(1, ","); }
  326.  
  327.                     WriteNodeInfo();
  328.                     first = 0;
  329.                 }
  330.             }
  331.         } while (SetNext(NODES));
  332.  
  333.         WriteString(1, ")");
  334.  
  335.         if (sw_N == 0)
  336.         {
  337.             WriteString(1, " % SYM ");
  338.             WriteInteger(1, cnt);
  339.             WriteString(1, " %");
  340.         }
  341.         WriteCrLf(1);
  342.  
  343.     } while (SetNext(ALL));
  344.     WriteCrLf(1);
  345.  
  346.     WriteString(1, "EQUATIONS:");
  347.     WriteCrLf(1);
  348.  
  349.     /* now the equations */
  350.     FirstPipe();
  351.     ok = AccessKeyWord("EQUATIONS");
  352.     while (ok == 1) {
  353.         PipeADF();
  354.         ok = AccessKeyWord("EQUATIONS");
  355.     }
  356.    
  357.     WriteString(1, "END$");
  358.     WriteCrLf(1);
  359.  
  360.     WriteString(0, "Done");
  361.     WriteCrLf(0);
  362. }
  363.  
  364.  
  365.