ECE 1387 - CAD for Digital Circuit
Synthesis and Layout

J. Anderson
March 2010

As mentioned in Assignment #2, to solve the linear system that represents the analytical placement formulation, we will use an existing solver: UMFPACK.  UMFPACK is a set of C routines for solving sparse linear systems.  To use UMFPACK, you will need to #include its interface in your program and link its libraries into your binary. 

Quick start documentation for UMFPACK (PDF): Section 2 of the document, which contains an example, was all I needed to figure out how to set up and matrices/vectors and invoke the solver.  UMFPACK has its own sparse matrix representation that you will need to use when formulating the placement problem.

The main UMFPACK webpage is: http://www.cise.ufl.edu/research/sparse/umfpack/

For Assignment #2, you may EITHER:

1) Download and compile your own copy of UMFPACK from the link above, OR
2) Use my already-compiled version:
  • EECG solaris version (compiled on seth.eecg): ~janders/UMFPACK
  • EECG linux version (compiled on mint.eecg): ~janders/UMFPACK_LIN
  • UG linux version (compiled on ug132.eecg): ~janders/UMFPACK
Compiling your program:

If it helps, the command I used to compile my program on UG linux was:

gcc -DNBLAS -I/nfs/ug/homes-0/j/janders/UMFPACK/UMFPACK/Include
-I/nfs/ug/homes-0/j/janders/UMFPACK/UFconfig
-I/nfs/ug/homes-0/j/janders/UMFPACK/AMD/Include a4.c graphics.c
/nfs/ug/homes-0/j/janders/UMFPACK/UMFPACK/Lib/libumfpack.a
/nfs/ug/homes-0/j/janders/UMFPACK/AMD/Lib/libamd.a -lm -lX11

UMFPACK can be compiled to make use of BLAS to speed its solving routines.  BLAS (which stands for Basic Linear Algebra Subprograms) is a standard and highly optimized set of utilities for solving linear systems.  One can compile UMFPACK so that, "under the hood" [transparent to the client], it calls BLAS to speed the solving of linear systems.  However, I have not compiled my copy of UMFPACK to use BLAS -- you also do not need to worry about it.