Capsule Summary: ---------------- setenv CAD_HOME /a/new/empty/directory make config make make install Note: CAD_HOME is usually something like /home/cad. The install process will generate (if necessary) and install into subdirectories of this root, namely ${CAD_HOME}/bin for executables and ${CAD_HOME}/lib/magic for run-time stuff. Note: Depending on the system, it may be necessary to use "gmake" in place of "make". This is almost certainly true if "make config" exits immediately complaining about errors in the "defs.mak" file.) Notes to Magic maintainers: -------------------------- This directory contains all the sources for the Magic system and related programs. The system runs on a number of machines. You should read the Magic Maintainer's manual as well as the introduction to Magic before compiling the system. These documents are in the "doc" subdirectory in ditroff/gremlin format as well as in Postscript. The compilation process happens in three steps. (1) To configure the system for a particular machine, set your CAD_HOME environment variable to where you would like to install magic and then run "make config" and answer the questions. This sets up compile flags in the defs.mak file. The default do not include optimization. If you want to optimize edit defs.mak after you run make config and add whatever flags you want. Some systems already have some flags in an alternate CFLAGS that's commented out. Keep in mind that most systems assume that the vendor supplied "cc" is present. If you want to compile with "gcc" on let's say Solaris or IRIX, you'll have to remove the compiler specific stuff in the flags. See the known_flags.txt file for hints. The real solution to this problem is to use a modern compilation system like "autoconf" to create the makefiles. We're working on it. (2) To then compile the system, type "make". If you are porting magic to a new system, your first step should be to set up the constants at the end of misc/magic.h. (3) When you are happy with it, do a "make install" to set up a tree stucture in the directory described by your CAD_HOME environment variable. See Maintainer's Manual #1 for more information on how the sources are organized and what compile-time options are available. Utility programs and libraries (ext2sim, magicusage): In addition to Magic, this directory contains several additional utility programs. These are described briefly in Maintainer's Manual #1, and more fully in their respective man pages. Each programs resides in a different subdirectory of this one. If you want to recompile any of these programs, you'll need to re-make the rest of Magic, since they use modules from Magic. Updates on the Net: ------------------- Use your World Wide Web browser to read: http://www.research.digital.com/wrl/magic/magic.html http://www.csl.cornell.edu/~rajit/magic/ If you don't have web access, use FTP to following site: machine: gatekeeper.dec.com (16.1.0.2) account: anonymous password: guest directory: pub/DEC/magic/6.4/notes What's new in 6.4: ------------------ This release, magic 6.4, contains the following modifications: 1) A number of bug fixes from the 6.3 notes. 2) A version numbering facility for tech files. Please add a new section to each tech file after the "tech" section, following this example: version version 2.0.3 description "MOSIS CMOS 0.13u Nano-nano technology." end Older versions of magic will complain about the new section, but no harm will be done. 4) Various comments describing dates and versions, including the above tech file information, are not written to the CIF file. 3) Support for patches and versioning: A new command called "version" lists out the version number and patches that are installed. A header file called patchlevel.h keeps track of a PATCHLEVEL integer and a string in patchlevel.c keeps track of the names of each installed patch. When posting patches to the net please be sure your patch updates variables. See the files for details. 4) Ports to Alpha AXP OSF/1, SGI/IRIX (courtesy of Stefanos Sidiropoulos) and Linux (courtesy of Harold Levy). 5) A change in the extractor algorithm to provide shielding for perimeter capacitances. Also a change in ext2sim to maintain information about the area and perimeter of diffusion and the bulk connection of the fets (written by Stefanos Sidiropoulos). What's new in 6.5: ----------------- 1) Bug fixes in the extractor propagation of attributes (SU) 2) New version of ext2sim ext2spice with support for hspice, spice2, and spice3 (SU) 3) Integration of the port to SUN's Solaris OS (MIT) 4) Port to FreeBSD2.x. Thanks to John Wehle (john@jwlab.feith.com) 5) Integration of part of the DEC/WRL code fragments into the drc code. Since the code is not completely trustworthy the fragments are ifdef'd so if need be the drc will behave exactly as the old one. (you just need to change the #define DRC_EXTENSIONS in drc/drc.h to do that). For a description of the extensions look into doc/tutwrl1.ps (DEC/WRL) 6) Integration of some patches in to the CIF code that introduce: (i) A new cif operation squares-grid which generates contacts on grid. (ii) A new cif layer command min-width is added so that generated layers have the correct min drc width when magic expands layers in the hierarchy (like it does with wells). Magic-6.5 crashes if compiled with gcc in Solaris2.x/SunOS5.x (curiously enough it does not have that problem if compiled with Sun's cc compiler). To get around that you need to set the flag -DUSE_SYSTEM_MALLOC flag in misc/DFLAGS after you run make :config. The error has to do with allignment of doubles and an alternative way to get rid of it is to change extract/extractInt.h so that CapValue is float instead of double. Nevertheless the first method is recomended. What's new in 6.5.1: -------------------- 1) Support for true-color displays (courtesy of Michael Godfrey) Look into doc/hires-color.txt 2) Minor updates in ext2sim, ext2spice What's new in 6.5.2: -------------------- Provided by R. Timothy Edwards (Johns Hopkins Applied Physics Laboratory): 1) Support for OpenGL Look at doc/open_gl.txt 2) Minor update to :config for selection of multiple graphics interfaces. 3) Updates to dstyle and cmap files 4) Always do a check to see if there is only one active layout window: There's no need to annoy the user with complaints of "Put the cursor in a layout window" when there is no possibility of confusion about the matter. Provided by Philippe Pouliquen (Johns Hopkins University): 5) "readline" command line editing capability 6) Macro extensions for X11 (see doc/macro_extension.txt) 7) Better handling of filenames on the UNIX command-line (multiple filenames allowed, ".mag" extension not required). 8) New commands: "child", "parent", "down", "xload", "list", "listall", "listtop", "shell", "imacro". 9) Command alterations: "box [+|-][dir]", "select visible", area of box included in "box" command. 10) Updated .magic macro file (source in magic/proto.magic, install in ${CAD_HOME}/lib/magic/sys/.magic) (see doc/default_macros.txt). What's new in 7.1: ------------------ Provided by Rajit Manohar (Cornell University) (formerly version 7.0): 11) Implementation of "scheme" (a subset of lisp), a powerful method of generating complex functions. 12) Using CVS to facilitate source code development from multiple sites. 13) New commands using scheme: Too many to mention here; see the tutorials in doc/tutscm* for explanations. Functions themselves are defined in ${CAD_HOME}/lib/magic/scm/*.scm 14) Overhauled the readline interface. See doc/textfiles/readline.txt for details. 15) Changed tons of stuff about the build environment: - the include paths in all files is now canonical. - redid the make process and rewrote all Makefiles. - tons of other small things that hopefully make the build process nicer.