The OctTools is a collection of programs and libraries that together form an integrated system for IC design. The system includes tools for PLA and multilevel logic synthesis, standard cell placement and routing, and custom cell design, along with a variety of utility programs for manipulating schematic, symbolic, and geometric design data. Most tools are integrated with the Oct data manager, the VEM user interface, and the design manager VOV. The software is written in C and requires UNIX and the X window system (including the Athena Widget Set). A few tools are written in C++ and require the g++ compiler.
  • Octtools is covered by the following Software Agreement.
  • The ILP Description includes a more complete description of the package.
    Tapes and docs are no longer available. Please ignore the prices and email addresses, this file is made available for historical reasons only.
  • octtools-5.2/ directory, see the README.txt file.
  • octtools-5.1.tar.gz - tar of Octtools 5.1 from the Industrial Liason Project (ILP) archives. The files in the archive are dated 11/15/1991.
  • octtools-5.0.tar.gz - tar of Octtols 5.0 from the Industrial Liason Project (ILP) archives. The files in the archive are dated 05/06/1991.
  • octtools-4.0.tar.gz - tar of Octtools 4.0 from the Industrial Liason Project (ILP) archives. The files in the archive are dated 11/06/1990.
  • Ptolemy Classic includes a modified version of Octtools that was updated to compile under ANSI compiliant C compilers. To build the modified version of Octtools, compile the sources in both the src and the other.src tar files
  • (12/03) The following problem was reported by Shachindra Sharma in src/octtools/Packages/st/st.c where a particular string results in a negative hash code because of overflow.
    Ptolemy Classic does not call this function, but st.c appears in other locations, such as http://www.mit.edu/afs/sipb/project/ruby-lang/src/ruby-1.6.4/st.c.
    The fix is below:
    int st_strhash(string, modulus)
         register char *string;
         int modulus;
      register long val = 0;
      register int c;
      while ((c = *string++) != '\0') {
        val = val*997 + c;
      /* Shachindra Sharma writes:
           ".. will have a problem when the value variable "val" is equal
           to the maximum negative integer value (for the particular OS its being
           run on say if its 32 bit OS the value would be -2^31 = -2147483648)
           val < 0 ? -val : val will still be -val for such a case due to the
           property of maximum negative integer that -val == val.
           As an example if we have a input string to this function like
           the one given below:
           the value of the variable "val" would be -2147483648 resulting
           in a negative value being returned by the function which could result
           in problems for the user is OS was 32 bit. The hash function otherwise
           for any values of "val" larger or smaller than this value would work
           fine so the probabilty of such a situation is rather low.
      if (val == -val) {
        unsigned int newhash = -val;
        return (newhash%modulus);
      } else {
        return ((val < 0) ? -val : val)%modulus;
  • Contact 
    ©2002-2018 U.C. Regents