[logo] 
Home
News
Activity
About/Contact
Major Tools
  Dinotrace
  Verilator
  Verilog-mode
  Verilog-Perl
Other Tools
  BugVise
  CovVise
  Gspice
  IPC::Locker
  Schedule::Load
  SVN::S4
  Synopsys-modes
  SystemPerl
  Verilog-Pli
  Voneline
  Vregs
General Info
  Book Tips
  Papers

Book Recommendations

What's better then a good book? Here's some of the books I've read and think this audience may find useful, or not, and links into Amazon for convenient searching.

Books on Verification

Debugging, by David J. Agans

My rating: Amazon rating:

A little book that covers many debugging techniques, such as divide and conquer, intermixed with good stories of bugs from the past. Great for new students, and as something to reach for when you're facing a nasty bug and are out of ideas.

Comprehensive Functional Verification, by Bruce Wile

My rating: Amazon rating:

It's very hard to find a good textbook, much less one on verification. This one does a good job at covering the basics though advanced techniques in a well written way.

Hardware Verification With C++, by Mike Mintz, Robert Ekendahl

My rating: Amazon rating:

If you have some verification experience and are starting on C++, this is an excellent book for you. Those experienced will find it a bit less useful, and the middle chapters on the authors tools aren't useful unless you are using Truss or Teal.

Assertion-Based Design, by Harry D. Foster

My rating: Amazon rating:

One of the few books with detail on the major assertion languages, with solid tips on applying them to design. While I would have skipped the parts of the book that are a language mini-reference, the sections on where to insert assertions alone make this worth a read.

Test Driven Development, by Kent Beck

My rating: Amazon rating:

Directed at software testers, this has some unique principles that are applicable to hardware. Primary among them is the idea of writing tests before the real design, then incrementally improving the implementation and the test in parallel.

Functional Verification Coverage, by Andrew Piziali

My rating: Amazon rating:

Focuses on the techniques of coverage analysis and reporting. Does an OK job covering the material, but for those that have done coverage before there's not much exciting.

Writing Testbenches, by Janick Bergeron

My rating: Amazon rating:

One of the first books on testbench design. Includes useful material and some good tricks for Verilog, but I'd suggest Wile's book first.

Search for other Verification books

Books on Verilog

SystemVerilog for Verification, by Chris Spear

My rating: Amazon rating:

If you know Verilog, this is a good overview of the new SystemVerilog verification features.

SystemVerilog for Design, by Stuart Sutherland, et al

My rating: Amazon rating:

Intended to be used with Verification book above, but focuses on synthesizable constructs, which the former lacks. Verification engineers probably want the Verification version and vice-versa, but probably not both.

Search for other Verilog books

Books on SystemC

SystemC: From the Ground Up, by David C. Black

My rating: Amazon rating:

While this book could benefit from some simplification, it's probably the best SystemC beginner book to date.

System Design with SystemC, by Thorsten Grötker

My rating: Amazon rating:

A collection of articles by different authors on different SystemC topics. It covers some basics and some more advanced topics, but now is fairly dated, and lacks coherent focus.

Search for other SystemC books

Books on C++

Effective C++, by Scott Meyers

My rating: Amazon rating:

The first time I read Meyer's tips on C++, I was just starting to use the language, and found most of the tips useful, but somewhat obscure. I've since learned. I revisit it every few years, and am continually amazed at how every tip addresses some problem I've come across in a very readable way. (He also has several follow up books that are worth it too.)

The C++ Standard Library, by Nicolai M. Josutti

My rating: Amazon rating:

THE reference manual for STL. It's fairly well written, while I learned STL with this book, that's not the intent. This book never makes it to my bookshelf, as I leave it on my desk and consult it every few days.

Effective STL, by Scott Meyers

My rating: Amazon rating:

Another great Meyer book, focusing on the C++ STL.

Large-Scale C++ Software Design, by John Lakos

My rating: Amazon rating:

If you're using SystemC in a large team, you'll find these techniques critical to helping your project succeed. Several of his techniques resulted in direct improvements in how SystemPerl operates.

Writing Solid Code, by Steve Maguire

My rating: Amazon rating:

Now dated, as it's talking about C code, but these principles of writing good programs won't go out of style.

Beyond the C++ Standard Library, by Björn Karlsson

My rating: Amazon rating:

A good introduction to Boost, which after the STL is the most useful C++ library out there.

C++ Template Metaprogramming, by David Abrahams

My rating: Amazon rating:

If you think you've mastered C++, this book will make you realize you only think you know what you can do with templates. Some sections will need repeated reading to understand how the authors are accomplishing their magic, and you probably don't really want to use some of these techniques in code anyone will have to ever understand, but you'll come away with a knowledge of templates that'll be useful in other projects.

Books on Perl

Programming Perl, by Larry Wall

My rating: Amazon rating:

The Camel Book is the reference and tutorial for learning Perl. There are other choices out there now, but this is still what I hand to new students of Perl.

Object Oriented Perl, by Damian Conway

My rating: Amazon rating:

Once you've mastered basic Perl, this is where to learn the best techniques for Object Oriented Perl. It'll be useful for anyone modifying Perl libraries.

Network Programming with Perl, by Lincoln D. Stein

My rating: Amazon rating:

This book has great examples on how to network using Perl. It was a great help when designing Schedule::Load and IPC::Locker.

Extending and Embedding Perl, by Tim Jenness

My rating: Amazon rating:

Here's how to embed Perl into your program, or understand how to extend Perl with C code. The key to how Verilog-Perl works.

Search for other Perl books

General Engineering and Computer Science Books

Computer-Related Risks, by Peter G. Neumann

My rating: Amazon rating:

What happens when we ignore the the possible risks of what we build. If you don't realize that our bugs can cause death, and all of the other risks our products cause, you need to read these studies.

Engineering a Compiler, by Keith Cooper

My rating: Amazon rating:

This book manages to covers advanced techniques without the diversions into computer science proofs that plague its competition. It's perfect to gain an understanding of some of the principles behind Verilator.

Other Books

The Design of Everyday Things, by Donald A. Norman

My rating: Amazon rating:

Why do we push doors we should pull? It's the designer's fault. As designers, we need to know these issues, and observe our users!

The Visual Display of Quantitative Information, by Edward R. Tufte

My rating: Amazon rating:

If you're wondering how to present complex data, be sure to look at this book on graphical design. It's beautiful, too.

The Soul Of A New Machine, by Tracy Kidder

My rating: Amazon rating:

This easy read covers a now 20 year old design, but it'll show the thrill of engineering to your girlfriend, spouse or parents.

Dreaming in Code, by Scott Rosenberg

My rating: Amazon rating:

The author tracks a open source project, though the real value is in the side-story about why writing software is hard, and the history of trying to manage software projects.

How Would You Move Mount Fuji?, by William Poundstone

My rating: Amazon rating:

If you like Microsoft-like brain teaser interview questions, you'll find this a great read.

Why We Buy, by Paco Underhill

My rating: Amazon rating:

The engineering method applied to the shopper. Very interesting.

Also available in: HTML TXT