DECIMATE

The DECIMATE global router should be of interest to people who do layout of VLSI standard cell designs.

EDGE

CAD (Computer Aided Design) for chips has a number of parallels with software engineering. As I've been writing a ton of code for the above mentioned global router, a lot of my time goes into thinking gosh, I spend a lot of time writing code; wish there was a better way to do this.

The net result is my EDGE text editor. EDGE stands for Experimental Directed Graph Editor, and adds some simple graph drawing routines, a little bit of file management, and a few additional emacs macros to the Tcl/Tk wish widget set. I use Tcl/Tk to get emacs key bindings within the editing window, and add a bit of file management to make large programs easier to manage.

If you're writing code or documents that span a number of files (for instance C programs, web pages, etc.), you might want to download a copy and try it out. I'm using it for most of my work.

The Generic C Library

download gcl.tz

Many years ago (around 1987), I found myself writing linked list code over and over again. This seemed like a waste of time, so I sat down and figured out a "generic" way to do things. Rather than embedding the forward and back links from within the structures, I created linked list nodes that held a void pointer (which was then used to store the data). A number of people have probably done something similar.

After doing the linked lists, I found a need for hash tables and heaps; those went into the library as well. Over the years, it's morphed into my "Generic C Library" which holds a hodge-podge of routines for things ranging from data storage to shortest path algorithms and Steiner tree heuristics. Whenever I write something new, I try to put it into my library.

While much of what the GCL does can be obtained from C++, there are still a few things that are not available. I'm not completely sold on some of the concepts of C++, and I still use C and the GCL for much of my work.

Algorithm Server

My DECIMATE global router employs a fairly simple method to allow interchangable interconnect algorithms. The idea is based on the Web-based CGI interface.


Back to the top