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

  1. /*
  2.  */
  3.  
  4. /*  VERSION="1.10   14-OCT-91"
  5.  *      - Added handling for 0 parts and/or 0 nets in a design
  6.  *      - Added Version message
  7.  *
  8.  *  A generic dump utility for hierarchical netlist files
  9.  *
  10.  */
  11.  
  12. int i;
  13.  
  14. /*------------------------*/
  15.  
  16. SheetPinMap()
  17. {
  18.     SetPinMap(0, "Unspecified    ");
  19.     SetPinMap(1, "Output         ");
  20.     SetPinMap(2, "Input          ");
  21.     SetPinMap(3, "BiDirectional  ");
  22.     SetPinMap(4, "Open Collector ");
  23.     SetPinMap(5, "Passive        ");
  24.     SetPinMap(6, "Hi-Z           ");
  25.     SetPinMap(7, "Open Emitter   ");
  26.     SetPinMap(8, "Power          ");
  27. }
  28.  
  29. /*------------------------*/
  30.  
  31. PinPinMap()
  32. {
  33.     SetPinMap(0, "Input          ");
  34.     SetPinMap(1, "BiDirectional  ");
  35.     SetPinMap(2, "Output         ");
  36.     SetPinMap(3, "Open Collector ");
  37.     SetPinMap(4, "Passive        ");
  38.     SetPinMap(5, "Hi-Z           ");
  39.     SetPinMap(6, "Open Emitter   ");
  40.     SetPinMap(7, "Power          ");
  41. }
  42.  
  43. /*------------------------*/
  44.  
  45. Initialize()
  46. {
  47.     WriteString(0, "Creating Netlist...");
  48.     WriteCrLf(0);
  49.  
  50.     WriteString(1, "Initialize - hform");
  51.     WriteCrLf(1);
  52.     AddSymbol("Formatter");
  53.     MakeInstanceFile();
  54. }
  55.  
  56. /*------------------------*/
  57.  
  58. PreFile()
  59. {
  60.     WriteCrLf(1);
  61.     WriteString(1, "Processing - ");
  62.     WriteCrLf(1);
  63.     WriteSymbol(1, FileName);
  64.     WriteCrLf(1);
  65. }
  66.  
  67. /*------------------------*/
  68.  
  69. WriteNetNode()
  70. {
  71.     i = GetStandardSymbol(TypeCode);
  72.     if (i == 'P')
  73.     {
  74.         WriteString(1, "Port   - ");
  75.         WriteSymbol(1, SignalNameString);
  76.     }
  77.     if (i == 'L')
  78.     {
  79.         WriteString(1, "Label  - ");
  80.         WriteSymbol(1, SignalNameString);
  81.     }
  82.     if (i == 'S')
  83.     {
  84.         WriteString(1, "Supply - ");
  85.         WriteSymbol(1, SignalNameString);
  86.     }
  87.     if (i == 'N')
  88.     {
  89.         WriteString(1, "Part   - ");
  90.         WriteSymbol(1, PinNameString);
  91.         WriteString(1, "  ");
  92.         WriteSymbol(1, PinNumberString);
  93.         WriteString(1, "  ");
  94.         WriteSymbol(1, ReferenceString);
  95.     }
  96.     if (i == 'U')
  97.     {
  98.         WriteString(1, "Sheet  - ");
  99.         WriteSymbol(1, PinNameString);
  100.         WriteString(1, "  ");
  101.         WriteSymbol(1, PinNumberString);
  102.         WriteString(1, "  ");
  103.         WriteSymbol(1, ReferenceString);
  104.     }
  105.     WriteCrLf(1);
  106. }
  107.  
  108. /*------------------------*/
  109.  
  110. WriteChildPin()
  111. {
  112.     WriteString(1, "     ");
  113.  
  114.     CopySymbol(PinNameString, Formatter);
  115.     PadSpaces(Formatter, 10);
  116.     WriteSymbol(1, Formatter);
  117.  
  118.     i = GetStandardSymbol(PinType);
  119.     WriteMap(1, i);
  120.  
  121.     WriteCrLf(1);
  122. }
  123.  
  124. /*------------------------*/
  125.  
  126. WritePin()
  127. {
  128.     WriteString(1, "     ");
  129.  
  130.     CopySymbol(ReferenceString, Formatter);
  131.     PadSpaces(Formatter, 12);
  132.     WriteSymbol(1, Formatter);
  133.  
  134.     CopySymbol(PinNumberString, Formatter);
  135.     PadSpaces(Formatter, 12);
  136.     WriteSymbol(1, Formatter);
  137.  
  138.     CopySymbol(PinNameString, Formatter);
  139.     PadSpaces(Formatter, 12);
  140.     WriteSymbol(1, Formatter);
  141.  
  142.     CopySymbol(PartName, Formatter);
  143.     PadSpaces(Formatter, 12);
  144.     WriteSymbol(1, Formatter);
  145.  
  146.     i = SymbolLength(ModuleName);
  147.     if (i == 0)
  148.     {
  149.         SetSymbol(Formatter, "EMPTY ");
  150.         PadSpaces(Formatter, 12);
  151.         WriteSymbol(1, Formatter);
  152.     }
  153.     else
  154.     {
  155.         CopySymbol(ModuleName, Formatter);
  156.         PadSpaces(Formatter, 12);
  157.         WriteSymbol(1, Formatter);
  158.     }
  159.  
  160.     i = GetStandardSymbol(PinType);
  161.     WriteMap(1, i);
  162.  
  163.     WriteCrLf(1);
  164. }
  165.  
  166. /*------------------------*/
  167.  
  168. WriteSignal()
  169. {
  170.     i = GetStandardSymbol(TypeCode);
  171.     WriteString(1, "Net Number - ");
  172.     WriteSymbol(1, NetNumber);
  173.     WriteString(1, "     ");
  174.  
  175.     if (i == 'L')
  176.     {
  177.         WriteString(1, "Label Node - ");
  178.         WriteString(1, " Node Name - ");
  179.         WriteSymbol(1, SignalNameString);
  180.     }
  181.     if (i == 'P')
  182.     {
  183.         WriteString(1, "Port Node - ");
  184.         WriteString(1, " Node Name - ");
  185.         WriteSymbol(1, SignalNameString);
  186.     }
  187.     if (i == 'S')
  188.     {
  189.         WriteString(1, "Supply Node - ");
  190.         WriteString(1, " Node Name - ");
  191.         WriteSymbol(1, SignalNameString);
  192.     }
  193.     if (i == 'N')
  194.     {
  195.         WriteString(1, "UnNamed Node - ");
  196.     }
  197.     if (i == 'U')
  198.     {
  199.         WriteString(1, "UnConnected Node - ");
  200.     }
  201.     WriteCrLf(1);
  202. }
  203.  
  204. /*------------------------*/
  205.  
  206. Title()
  207. {
  208.     WriteSymbol(1, SheetNumber);
  209.     WriteString(1, "/");
  210.     WriteSymbol(1, TotalSheets);
  211.     WriteString(1, " ");
  212.     WriteSymbol(1, SheetSize);
  213.     WriteCrLf(1);
  214.  
  215.     WriteSymbol(1, DateString);
  216.     WriteString(1, " ");
  217.     WriteSymbol(1, DocumentNumber);
  218.     WriteString(1, " ");
  219.     WriteSymbol(1, Revision);
  220.     WriteCrLf(1);
  221.  
  222.     WriteSymbol(1, TitleString);
  223.     WriteCrLf(1);
  224.     WriteSymbol(1, Organization);
  225.     WriteCrLf(1);
  226.     WriteSymbol(1, AddressLine1);
  227.     WriteCrLf(1);
  228.     WriteSymbol(1, AddressLine2);
  229.     WriteCrLf(1);
  230.     WriteSymbol(1, AddressLine3);
  231.     WriteCrLf(1);
  232.     WriteSymbol(1, AddressLine4);
  233.     WriteCrLf(1);
  234.     WriteCrLf(1);
  235. }
  236.  
  237. /*------------------------*/
  238.  
  239. PostFile()
  240. {
  241.     WriteCrLf(1);
  242.     WriteString(1, "Processed - ");
  243.     WriteSymbol(1, FileName);
  244.     WriteCrLf(1);
  245.  
  246.     WriteString(1, "Title Block :");
  247.     WriteCrLf(1);
  248.     Title();
  249.  
  250.     WriteCrLf(1);
  251.     i = FirstChild();
  252.     if (i == 0)
  253.     {
  254.         WriteString(1, "No Children.");
  255.         WriteCrLf(1);
  256.     }
  257.     else
  258.     {
  259.         WriteString(1, "----- Children -----");
  260.         WriteCrLf(1);
  261.         SheetPinMap();
  262.         do {
  263.             WriteString(1, "--------------------");
  264.             WriteCrLf(1);
  265.             WriteSymbol(1, ReferenceString);
  266.             WriteString(1, "  ");
  267.             WriteSymbol(1, PartName);
  268.             WriteCrLf(1);
  269.  
  270.             i = ChildPinCount();
  271.             WriteString(1, "ChildPinCount - ");
  272.             WriteInteger(1, i);
  273.             WriteCrLf(1);
  274.             do {
  275.                 WriteString(1, "Child Pin      : ");
  276.                 WriteChildPin();
  277.                 WriteString(1, "Signal         : ");
  278.  
  279.                 i = SetSignal();
  280.                 if (i == 1)
  281.                 {
  282.                     WriteSignal();
  283.                 }
  284.                 else
  285.                 {
  286.                     WriteString(1, "Child Pin is not used.");
  287.                     WriteCrLf(1);
  288.                 }
  289.                 WriteString(1, "Child Pin Info : ");
  290.                 WriteCrLf(1);
  291.                 WritePin();
  292.                 WriteCrLf(1);
  293.             } while (NextChildPin());
  294.             WriteCrLf(1);
  295.         } while (NextChild());
  296.     }
  297.     WriteCrLf(1);
  298.  
  299.     i = FirstPart();
  300.     if (i == 0)
  301.     {
  302.         WriteString(1, "No Parts.");
  303.         WriteCrLf(1);
  304.     }
  305.     else
  306.     {
  307.         WriteString(1, "----- Parts -----");
  308.         WriteCrLf(1);
  309.         PinPinMap();
  310.         do {
  311.             WriteString(1, "--------------------");
  312.             WriteCrLf(1);
  313.             WriteSymbol(1, ReferenceString);
  314.             WriteString(1, "  ");
  315.             WriteSymbol(1, PartName);
  316.             WriteCrLf(1);
  317.  
  318.             i = PinCount();
  319.             WriteString(1, "PinCount - ");
  320.             WriteInteger(1, i);
  321.             WriteCrLf(1);
  322.             do {
  323.                 WriteString(1, "Signal        : ");
  324.                 i = SetSignal();
  325.                 if (i == 1)
  326.                 {
  327.                     WriteSignal();
  328.                 }
  329.                 else
  330.                 {
  331.                     WriteString(1, "Pin is not used.");
  332.                     WriteCrLf(1);
  333.                 }
  334.                 WriteString(1, "Part Pin Info : ");
  335.                 WriteCrLf(1);
  336.                 WritePin();
  337.             } while (NextPin());
  338.  
  339.             WriteCrLf(1);
  340.         } while (NextPart());
  341.     }
  342.     WriteCrLf(1);
  343.  
  344.     i = FirstNet();
  345.     if (i == 0)
  346.     {
  347.         WriteString(1, "No nets.");
  348.         WriteCrLf(1);
  349.     }
  350.     else
  351.     {
  352.         do {
  353.             WriteString(1, "----- Nets -----");
  354.             WriteCrLf(1);
  355.             WriteString(1, "Net Number - ");
  356.             WriteSymbol(1, NetNumber);
  357.             WriteCrLf(1);
  358.  
  359.             do {
  360.                 WriteNetNode();
  361.             } while (NextNode());
  362.         } while (NextNet());
  363.     }
  364. }
  365.  
  366. /*------------------------*/
  367.  
  368. WriteInstanceFile()
  369. {
  370.     int len;
  371.  
  372.     WriteCrLf(1);
  373.     WriteCrLf(1);
  374.     SetAccessType("LIBRARY");
  375.     do {
  376.         len = SymbolLength(LibraryNameString);
  377.         if (len > 0) {
  378.             WriteSymbol(1, LibraryNameString);
  379.             WriteCrLf(1);
  380.             do {
  381.                 WriteString(1, "    ");
  382.                 WriteSymbol(1, ReferenceString);
  383.                 WriteString(1, "    ");
  384.                 WriteSymbol(1, PartName);
  385.                 WriteString(1, "    <");
  386.                 WriteSymbol(1, ModuleName);
  387.                 WriteString(1, ">");
  388.                 WriteCrLf(1);
  389.             } while (NextInstance());
  390.         }
  391.     } while (NextAccessType());
  392.     WriteCrLf(1);
  393.     WriteCrLf(1);
  394.  
  395.     RewindInstanceFile();
  396.  
  397.     while (LoadInstance())
  398.     {
  399.         CopySymbol(ReferenceString, Formatter);
  400.         PadSpaces(Formatter, 10);
  401.         WriteSymbol(1, Formatter);
  402.  
  403.         CopySymbol(PartName, Formatter);
  404.         PadSpaces(Formatter, 10);
  405.         WriteSymbol(1, Formatter);
  406.  
  407.         CopySymbol(ModuleName, Formatter);
  408.         i = SymbolLength(ModuleName);
  409.         if (i == 0)
  410.         {
  411.             SetSymbol(Formatter, "EMPTY");
  412.         }
  413.         PadSpaces(Formatter, 10);
  414.         WriteSymbol(1, Formatter);
  415.  
  416.         CopySymbol(TimeStamp, Formatter);
  417.         PadSpaces(Formatter, 10);
  418.         WriteSymbol(1, Formatter);
  419.  
  420.         WriteCrLf(1);
  421.         WriteString(1, "    <");
  422.         WriteSymbol(1, FieldString1);
  423.         WriteString(1, "> ");
  424.         WriteString(1, "<");
  425.         WriteSymbol(1, FieldString2);
  426.         WriteString(1, "> ");
  427.         WriteString(1, "<");
  428.         WriteSymbol(1, FieldString3);
  429.         WriteString(1, "> ");
  430.         WriteString(1, "<");
  431.         WriteSymbol(1, FieldString4);
  432.         WriteString(1, "> ");
  433.         WriteString(1, "<");
  434.         WriteSymbol(1, FieldString5);
  435.         WriteString(1, "> ");
  436.         WriteString(1, "<");
  437.         WriteSymbol(1, FieldString6);
  438.         WriteString(1, "> ");
  439.         WriteString(1, "<");
  440.         WriteSymbol(1, FieldString7);
  441.         WriteString(1, "> ");
  442.         WriteString(1, "<");
  443.         WriteSymbol(1, FieldString8);
  444.         WriteString(1, "> ");
  445.         WriteCrLf(1);
  446.     }
  447. }
  448.  
  449. /*------------------------*/
  450.  
  451. PostProcess()
  452. {
  453.     WriteInstanceFile();
  454.  
  455.     WriteString(0, "Done");
  456.     WriteCrLf(0);
  457. }
  458.  
  459.