The book is better at giving solutions to less than perfect situations. Though old, the book does not lag behind.
Six years on, this is still recommended. It explains many issues one might not have ever thought of. The chapters can be read in any order.
Most of the questions are of the genres "Why does the code shown in figure 2.5-1 yield an error?" or "How can a model be created to force errors onto a signal?". Cohen wrote many scenarios well.
Cohen explains that VHDL does not allow anonymous array types (which Ada gurus disapprove of anyway). Curly bracket huggers may have a little exposure to this kind of type: they are like Java's anonymous classes but unlike Java's anonymous arrays (sic) and unlike C++ anonymous unions. Anonymous non-array types are legal in VHDL and are not explicitly mentioned.
The earliest chapters fuel dissatisfaction with what is in other ways a nice language. Given solutions are not always ideal. Vendors are to blame, not Cohen.
The most important part of the book is its listing of VHDL features which most synthesizers refuse to produce a netlist for. Not an authoritative overview of modern tools, but it is bewildering that compilers for primitive programming languages had always given full support to features present in VHDL when synthesis tools do not support these features, and the lack of maturation in tools to support VHDL is shocking.
I am not keen on the favouring of weaktyping with subtyping in the book instead of strongtyping.
One section is intended as "a university type of final exam". Its layout is impractical for a dedicated student to pretend to be in an examination.
Much of two chapters are essentially pre-written by other people so you might not want to get the book. The index needs improvements.
Other material you might find without buying this book is in the news:comp.lang.vhdl FAQ. The book is better at giving solutions to less than perfect situations. Though old, the book does not lag behind. Neither the file nor the book devote much to the differences between the different versions of VHDL.