Centaur Books

Centaur Logo

Introduction

The Centaur Books are a free set of ACL2 libraries for formal hardware verification.

They include:

Centaur Technology is a small company in Austin, TX. We design x86 processors for our parent company, VIA Technologies. We have used these books to prove correctness properties of several execution units, and to develop other tools such as an equivalence checker, a linter, etc.

Prerequisites

Warning: We expect these books to be much less stable than ordinary ACL2 books because we are actively using them and often need to extend them.

Recommended Hardware
You probably want at least a dual-core machine with 8 GB of memory.
You might even want more memory than this. Having ample memory is especially important when you want to carry out proofs using BDDs. Many of our real hardware proofs are made faster (or possible) by having 32 or more GB of memory. Even things like our Verilog parser are written in a memory-hungry way because that's just the kind of environment we work in.
Having additional cores is very useful for certifying books in parallel.
Recommended Operating System
We use 64-bit Linux. It might be possible to use Darwin or BSD or other unixes instead, but Linux is the main platform. You will need the typical tools like perl, make, etc.
Clozure Common Lisp Configuration
We use 64-bit Clozure Common Lisp. Other Lisps probably won't work.
We usually use a fairly recent SVN snapshot.
We use ccl-config.lsp to do some extra configuration that increases the stack sizes and tunes the garbage collector for better performance.
We configure our PATH so that we can launch CCL by typing ccl.
ACL2(h) Configuration
You will need to build ACL2 with Hons enabled. The recommended way to build is with:
make LISP=ccl ACL2_HONS=h ACL2_SIZE=3000000
Using a large ACL2_SIZE can help avoid performance problems due to filling up the ACL2 package with too many symbols.
We generally configure our PATH so that we can launch ACL2(h) by typing acl2.
cert.pl Configuration
We use cert.pl instead of Makefiles. This script is located in the acl2/books directory. We recommend that you configure your PATH so you can invoke it by just typing cert.pl.
GTKWave Configuration (Optional)
We often use GTKWave for debugging waveforms. Other VCD file viewers may also work.
We configure our PATH so that we can run GTKWave by typing gtkwave.

Building the Centaur Books

Once you have all the above prerequisites, you will be ready to certify the Centaur books. There are two steps:

1. Build the Quicklisp book. This is special because it has to go download Quicklisp and run its setup.

cd [...]/acl2/books/centaur/quicklisp
make

2. Build the rest of the books and all available documentation:

cd [...]/acl2/books/centaur
cert.pl doc.lisp -j 4           # -j 4 for a quad-core processor

Depending on your hardware this may take ten minutes up to hours.

Next Steps

The cert.pl command above should produce a reference manual with documentation for the Centaur books. The manual also has all of the regular documentation for ACL2 and also for several other libraries that we use, e.g., str, osets, ihs, etc.

To view the manual, point your web browser at books/centaur/manual/preview.html. (Note: this will be a broken link until you generate the manual.) You can also build an HTML version of the manual that may render faster, see the documentation for XDOC for more information.

There is also a very preliminary tutorial that walks through the verification of a trivial ALU module. To get started, see:

books/centaur/tutorial/intro.lisp

Contact Information

If you have questions, comments, or bug reports about these books, please email Jared Davis and Sol Swords, {jared,sswords}@centtech.com.

Unfortunately we can't offer any serious technical support. We may be able to answer some questions on an informal, "low bandwidth" basis, in our spare time.

License Information

Copyright © 2008-2012 Centaur Technology and others (see **)

Contact Information
Centaur Technology Formal Verification Group
7600-C N. Capital of Texas Highway, Suite 300, Austin, TX 78731, USA.
http://www.centtech.com/
Copyright Notice
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.

** All of the Centaur books are licensed under the GPL "2 or later." Most are copyright by Centaur Technology, but some are copyrights of others, e.g., the books in ubdds/ are copyright by Bob Boyer and Warren Hunt; see the individual headers on each file for more information. Also note that many books here depend on other ACL2 libraries, each of which are copyright by their respective owners. To the best of our knowledge, we believe all libraries we include are also licensed under the GPL "2 or later" or compatible licenses.