I. Code which has become obsolete:

  1. Remove utils/doubleint.* and utils/ndoubleint.*, and replace with
     standard handling of double-precision integers ("long long", or 64
     bit, whichever was actually intended).  This change also obviates
     the need for all the ENDIAN definitions in misc/magic.h, which tend
     to break magic on new OS ports. . .

  2. Remove Gremlin and Versatec plot functions.
   
II. Features to add:

  1. Need a new "undo" representation for select/unselect functions.
     Large selections such as network selections or large area selections
     are more compact if the whole selection celldef is kept, rather than
     attempting to disassemble the selection into separate paint and
     erase rules.  Each cell would be kept in a structure with a ref
     count, such that undo/redo records could point to the same celldef
     without having to duplicate it.  Also, if no intervening paint/erase
     functions occurred, a selection could be recovered instantly,
     preventing the huge allocation of memory that now occurs when, for
     example, ground and power networks are repeatedly selected in a
     large design.

  2. The new transistor W,L extraction method needs to be generalized.
     Also, the extractor should use the original, simple method when
     a device contains only one tile, and the new method for any
     device with more than one tile.  This is easy to determine, as
     the extractor already does a boundary search on each device.

  3. GDS output can be significantly compacted by replacing the "squares"
     generation function with one which first creates a cell from the
     contact cut and then arrays the cell to fill up the contact area.
     To go along with the output method, it is necessary to have an
     input method which will flatten such contacts back into magic's
     standard contact types.

  4. DEF format output routine.

  5. Style files should be able to use X11-named colors.  Styles should
     render in the order specified in the technology file.  Any style
     which would be obscured by a solid style for the same layer should
     be duplicated into a higher-numbered style entry and renumbered.
     This change allows styles which have been ordered in bizarre ways
     in the 7-bit graphics files (to get around the limitations of the
     7 bit planes) to be reordered naturally in the 24-bit and OpenGL
     files without affecting the way types in a tech file are rendered.

III. Experimental stuff:

  1. Find a way to implement general-purpose "composite" types, which
     are not necessarily contacts.  Specifically, it would be nice to
     split active, poly, and poly2 into separate planes, and let
     transistor and capacitor types exist on two planes, like contacts
     do.

IV. Bugs to fix:

  1. The "widespacing" rule does not catch all cases of rule violation,
     depending on the tile configuration.

  2. GDS output needs to be corrected for arrays which have indices
     counting down instead of up, which is not legal GDS syntax.  Such
     arrays need to be rotated or flipped, with the arrayed cells
     counter-rotated or counter-flipped to match.

  3. The select-stretch function does not always do what one would
     expect, especially with regard to transistor/diffusion boundaries.

  4. The hierarchical DRC is failing on stacked contacts which are
     sandwiched between other contacts.  The database appears to be
     correct, but the DRC should not be flagging an error.
