




                               ValidEXPDIFF  

                   (Program Release ValidEXPDIFF 1.0.2)

                        09 Dec 85  Bill Hunsicker

               (C) Copyright 1985 Valid Logic Systems, Inc.



1.0  ValidEXPDIFF Usage

ValidEXPDIFF compares 2 expansion files that are expected to be equivalent
and returns a list of differences.  The check is independent of the order of
the primitives and the order of pins or properties.  It compares
connectivity, body properties and pin properties (in the BINDINGS section).
It does not check properties listed in the PIN - END_PIN nor the SIGNAL -
END_SIGNAL sections of the file.  It does not check the heading section of
the file.  ValidEXPDIFF is NOT a supported product.  Its use is to perform
QA on a new compiler (such as ValidCOMPILER) by comparing the new compiler's
expansion file output with that produced by the (old) SCALD compiler.

Assuming that the executable file "expdiff" is in a directory in your search
path, it is run as follows:

    expdiff [-p][+p] <file1> <file2>

with the -p and +p flags controlling whether or not properties are to be
checked.  The default is +p which says to check the properties.  <file1> and
<file2> specify the names of the expansion files to be compared.

The program returns 0 if successful and no differences were detected.  It
returns 1 if differences were detected and 11 if completely unsuccessful for
some reason (such as being unable to open or successfully parse some file).
Explanatory messages are written to standard error;  the list of differences
is written to standard output.

The difference list gives the path name of the primitive for which the
difference occured and the line number of the path name within each file.
It then lists the differences for that primitive in a manner similar to that
used by the diff program.  Lines beginning with "<" indicate data from file
1 and lines beginning with ">" indicate data from file 2.  If a path name
exists in only one file, then that fact is reported with no further
information for that primitive.








                                    1
          ValidEXPDIFF        


To see how this works, do the following:

1.  Make a copy of an existing expansion file.

2.  Edit it and change some signal name(s) or body property(ies).  (Pin
    properties can also be used if the changes are made in the BINDINGS
    section.)

3.  Run expdiff on the original and the changed copy and observe the result.

4.  Change the order of one of the files without changing its meaning, as by
    moving all lines for some primitive to a different place in the file
    between 2 other primitives.  Each primitive begins with PRIMITIVE and
    ends with END_PRIMITIVE.

5.  Run expdiff again and observe the result.




2.0  Anomalies

Expdiff is not smart about NC signals.  It will report a difference between
NC\REP='4' and NC<3..0> though both represent the same thing.

Body properties are constrained to be ordered on a level-by-level basis from
properties on the primitive up through properties inherited from each higher
level of the hierarchy.  Within any particular level the order is not
significant.  Since there is no way to tell from what level a particular
property was taken, this constraint can not be checked.
























                                    2
