C.A.D.: Bookshelf
![]() | UMICH Physical Design ToolsSaurabh N. Adya |
This release contains over 170,000 lines in C++ implementing leading-edge industrial-grade VLSI Physical Design tools: the Capo
placer, the Parquet
floorplanner, the MLPart
partitioner, the object-oriented UCLA DB database with LEF/DEF parser and all supporting libraries. Several binary placement utilities are available from the Placement Utilities
web page. A list of publications describing algorithms in Capo and MLPart can be found at the bottom of this page, in particular, our papers ``Can Recursive Bisection Alone Produce Routable Placements?'', DAC 2000 (.pdf)
and ``Unification of Partitioning, Floorplanning and Placement'', ICCAD 2004 (.pdf)
compare Capo with major commercial placers. Capo 10, released in February 2006, reliably produces routable placements for all IBMv2 benchmarks (use the -ROOSTER option) and outperforms all major academic placers which we could obtain or for which published data was available. See our ISPD 2006 paper
for more details.
The codes are distributed under a liberal open-source license
. All codes conform to the ANSI C++ standard and extensively use the Standard Template Library (STL). This distribution is self-contained in the sense that no additional libraries are required to compile it. It has been successfully compiled with g++2.95, g++3.0.4, g++3.1, g++3.2 (currently not supported), g++3.3, g++3.4, g++4.0, g++4.1, SunPro CC5.1 and MSVC++7.1 and 8 (.NET 2003 and .NET 2005). (see successful platforms reported by users
).
Currently, the installation scripts target Unix systems (Linux, including Debian and RedHat, Solaris 6 and higher) and require PERL 5 or higher. The code requires g++ 2.95.2 or higher, but problems have been reported with g++ 3.0.1 (g++ -v will tell you version number) or SunPro CC 5.1 or higher (Workshop 5.0 and earlier are not supported) that come with Sun Forte C++ (formerly Workshop): CC -V will tell you version number. The code can be compiled with MSVC++7.1 (.NET 2003), but we do not support CygWin. Installation management for Windows is provided by the build files included in new UMpacks, and limited technical support is available via email. For the latest versions of g++, see its official site http://gcc.gnu.org
. For PERL downloads, see http://www.perl.org
or U. Florida Software Depot
. Our software uses gnuplot
for visualization. If you are using Windows, you may want to download a gnuplot binary. Linux and Solaris systems usually come with gnuplot installed, but recently released version 4.0 is highly recommended.
Note On at least one platform configuration building Capo executables requires manual intervention (cannot be done out-of-the-box). Contact us if you need help.
At least 300-400Mb of free disk space is required for successful installation and regression testing.
Start by downloading a "UMpack" from http://vlsicad.eecs.umich.edu/BK/PDtools/tar.gz
. UMpacks come in files with names like UMpack-42-042014.tar.gz, where 42 (could be a different number) is the total number of packages inside, and the rest is the date on which UMpack was created (Oct 14, 2004 in this example). Further instructions will use the file name UMpack-42-042014.tar.gz as an example. Type
gunzip UMpack-42-042014.tar tar xvf UMpack-42-042014.tar.gzthis will create directory UMpack-42-042014 with package subdirectories inside. Other files are README.txt (installation instructions), config (installation script), COPYRIGHT (notice), Versions (of packages), lib/ (symbolic links to shared libraries produced by packages). Read README.txt and then type
script install.log perl configThe first command will log all screen output into the file install.log, and the second command will perform installation. First, it will probe the system and ask you several questions, then it will configure UMpack accordingly. When installation finished, and you see a command prompt, type
exitThis will finalize the install.log file. Enclose it with your bug reports and installation questions (sent to capo.request@gmail.com). The installation program will check the available disk space (at least 300-400Mbs are required) and compiler versions. It will update Makefiles in all packages for use on your system and then offer to build libraries in all packages. If libraries are built successfully, it will offer testing the packages. The installation program will attempt to produce executables, run them, compare the results to precomputed "expected output" and report how big the differences are. In most cases, there will be no difference, however, several packages may report differences that are not in indicative of errors (those are mentioned under "Known problems" below). The differences are saved in file diffs.notime in every package and can be verified by visual inspection and sent to developers for further analysis. If you would like to build libraries using a different configuration or a different compiler, you can run the installation program more than once.
In the process of creating UMpack, package dependencies are traced automatically, and all required packages are included. Therefore, every given UMpack is self-contained, simplifying version management.
Packages are connected through header files and shared libraries (symbolically linked from the lib subdirectory). Every time a shared library is changed, all executables linked against it will automatically accomodate the change. Removal of functions from libraries or changes in function signatures may lead to run-time errors and therefore require a recompilation of all dependent libraires.
Every package contains Makefile that can be used with the following commands: make and makeOpt (to use SunPro CC or other compiler invoked with CC on your system), make-gnu and makeOpt-gnu (to use g++) as well as the distributed versions dmake, dmakeOpt, dmakeOpt-gnu, dmake-gnu and dmakeOpt-gnu that assume the availability of dmake (e.g., Sun's "distributed make"). Note: distributed make is sometimes not good for linking, but only good for compilation.
Every Makefile accomodates [at least] the following targets: all, lib, test. all is typically defined to be lib. make lib produces libraries for this package (necessary to use the package). make test produces regression tests for the package of the form PackageName99.exe, where 99 is a one- or two-digit number. Every .exe file is produced from a .cxx file with the same base name.
Every package has a script called regression, which launches .exe files, compares the "new output" to "precomputed output" and reports the differences. In rare cases, non-trivial but insignificant differences may be caused by processor architecture and compiler subtleties. Segmentation faults and crashes should not happen if the installation went normally.
The files of the form PackageName99.cxx typically demonstrate sample uses of the classes defined in the package and are short "glue files" (i.e., do not define new functionalities, but rather use them). In many cases, those files will be sufficient for many common uses and experiments.
Please let us know if your installation went successfully by mailing to capo.request@gmail.com. For Unix systems (Linux, Solaris etc), supply the output of the following commands, uname -a, showrev -p, g++ -v, g++ -print-prog-name=ld, CC -V, ld -V, perl -v, bison --version, flex --version and df -k . (the latter should be run in the installation directory before and after the installation). If your installation failed, please also supply the installation log. For non-Unix systems, supply the name and the version of the system and the compiler as well as the amount of available disk space.
), IEEE Trans. on Computer-Aided Design, vol. 25, no. 7, pp. 1313-1326, 2006.
), to appear in IEEE Trans. on Computer-Aided Design, 2007.
), Proc. Int'l Symp. on Physical Design (ISPD), pp. 170-177, San Jose, CA, April 2006.
), to appear in IEEE Trans. on Computer-Aided Design, 2007.
), Integration: the VLSI Journal, vol. 39/4, pp. 340-362, 2006.
), IEEE Trans. on Computer-Aided Design, vol. 25, no. 7, pp. 1313-1326, 2006.
), IEEE Trans. on CAD, April 2004, pp. 472-488.
), ACM Trans. on Design Automation of Electronic Systems , 2004.
), IEEE Trans. on CAD, vol. 22(11), November 2003, pp. 716-724.
, .pdf
), IEEE Trans. on CAD, vol. 19, no. 11, 2000, pp. 1304-1314.
, .pdf
) VLSI Design, vol. 11, no. 3, 2000, pp. 249-58
, .pdf
), IEEE Trans. on CAD, vol. 19, no. 2, 2000, pp. 267-272.
, .pdf
) ACM Journal on Experimental Algorithms
, vol. 5, 2000.
), VLSI Design, 10(1) (1999), pp. 99-116.
), to appear in Proc. ASPDAC, 2007.
), Proc. Int'l Symp. on Physical Design (ISPD 2006), pp. 206-208.
), Proc. Int'l Symp. on Physical Design (ISPD 2006), pp. 78-85.
), Proc. Int'l Symp. on Physical Design (ISPD 2006) (BPA nominee), pp. 170-177.
), Proc. Intl. Symposium on Physical Design (ISPD 2005) .
, slides
), Int'l. Conf. Computer-Aided Design (ICCAD 2004), pp. 550-557.
), Proc. Great Lakes Symp. on VLSI (GLSVLSI), Boston, Massachusetts, April 2004, pp. 113-118.
), to appear in Proc. Great Lakes Symp. on VLSI (GLSVLSI), Boston, Massachusetts, April 2004.
), in Proc. Intl. Conf. on Computer-Aided Design(ICCAD 2003), pp. 311-318.
), in Proc. ACM/IEEE Intl. Symp. on Physical Design (ISPD), pp. 12-17, April 2002.
, .ppt
), Proc. Intl. Symp. on Physical Design (ISPD) , pp. 95-103, Monterey, CA, April 2003.
, .pdf
), Proc. Design Automation Conf., Los Angeles, June 2000, pp. 693-698. 