I’d like to share my impressions of the book, and a few sparks it lit up in my brain as I was reading it. First I think this book is very important. I’ve always wanted to learn how to get rid of proprietary languages for asic verification, and this book shows me how. IMHO, this book has the potential to change the landscape in asic verification from crippled proprietary languages to the flexibility and power of C++.
The book introduces not only the foundation for building a verification infrastructure using C++ (e.g. random stability, cooperative threading) but also the nuts and bolts of it (e.g. register data types, logging).
I really liked the first 2 chapters, but the real deal for me started in chapter 3 with the first example. I write code for a living, so examples are very important to me. I knew after chapter 3 that I would read the book from cover to cover.
I knew quite a bit of the stuff in chapter 4, so it was a quick read for me.
Chapters 5, 6, 7 and 8 are about teal and truss. I have read them with attention. These chapters confirm that C++ is suited for the kind of work we do in asic verification: environment structure, environment flows, run scripts, etc. The authors show a small example where Perl and make are used to implement run scripts. I have become a big fan of GNU Make after seeing Janick use it. Then I realized I could not only build environments with it, but run test cases as well. For me, it was bye bye duct-tape Perl. I think C++ and Make is a winning combination for asic verification infrastructure.
There is a bit of advocacy for OOP in the book. Since the proprietary solutions converted me to OOP years ago, I read those sections quickly.
I’m at chapter 13 now, so I can’t comment on the rest, but I see lots of code in the coming pages…
I really like when the authors apply common sense to solve annoying coding problems. The example on how to get rid of deeply nested if statements on page 238, although simple, is a very effective technique which I only recently discovered on my own. They do that a couple of times in the book, they’re little pearls of knowledge, and you don’t need to know OOP to smile as you read them!
My greatest hesitation with C++ used to be the lack of few “minor” things like a constraints solver, functional coverage, and data packing/unpacking. After many years of using a proprietary constraint solver, I think it is entirely possible to live without a constraint solver at all. For example, a recent posting on the verification guild web site explains how to select a value based on a weighted range:
http://verificationguild.com/modules.php?name=Forums&file=viewtopic&t=1368&postdays=0&postorder=asc&highlight=verilog+dist&start=15
I am convinced that I can use a similar technique to execute code based on a weigthed range of values in C++. This way I could write my own solutions instead of using a constraint solver. I have also solved other types of constraints using procedural code.
As for functional coverage, I never understood why the underlying database could not be MySQL. One only has to figure out the methodology and show it to the world. Nothing C++ cannot do.
Lastly, I don’t see why packing and unpacking could not be solved in C++ either, since many times I could not use the proprietary languages built-in and had to write my own pack and unpack routines.
But I digress, I still have a few chapters to read.
So far, this book really got me thinking about what language I should use for asic verification. Because of that, it’s a great book. I am pretty sure I will read it a second time, after I follow the authors’ advice and learn a bit of C++.
Thank you for writing this book!

#1 by mike on October 2, 2006 - 9:26 am
Hi PTK,
Thanks, you’ve made my day! Yes, the if test reversal thing is trivial once you find it. I wanted to make longer examples of the techniques, especially the use of the ctor and dtor of C++, but time was not my friend.
Would you “copy and paste” this review to the amazon site? We do not have any reviews yet.
It sounds like we think the same way. Let’s figure out how to work together.
Take care,
Mike
#2 by ptk on October 3, 2006 - 8:32 am
Sorry, but I don’t have an amazon account. I purchased directly from Springer. These days, I’m reading up on C (it’s been 15+ years since my last C program???). Then I plan to learn C++ as a background activity, then maybe try to code up a few things using Teal. Reading a few books does not take me long, it’s finding the time to read them!
Very nice drupal site by the way.
#3 by mike on October 3, 2006 - 9:09 am
Hi PTK,
It does not cost anything to create an amazon account, but I can understand not wanting to creat yet another web account.
Let me know if I can help as you ramp up to c++. I have taught classes in c++ and would recommend starting from there rather then C. The C language has a fair amount of restrictions that are not present in C++. Definately buy Bjarne’s book “The C++ Language” as a bible. Read the section “A better C” for some background.
Also, a cheapo but ok book is “Teach yourself C++ in 24 hours”. It’s campy, but does get you up to speed.
Take care,
Mike
#4 by robert on January 13, 2007 - 5:28 pm
Ptk,
I just reread this thread and wanted to comment that it’s not necessary to learn C before you learn C++, it might actually hinder you (it did for me).
C++ has a different mindset then C, but “looks the same”. Programing C++ the “C way” creates ugly and hard to maintain code.
So if you haven’t already started with C (again) I would recommend jumping directly to C++.
I would also recommend taking some time to understand (how to use) the standard libary (vectors, maps etc). It really helps writing maintainable, fast and error free code.
/Robert