Circuit Design with VHDL

In Part I of the book, we studied the entire background and coding techniques of VHDL, which included the following:
Code structure: library declarations, entity, architecture (chapter 2)
Data types (chapter 3)
Operators and attributes (chapter 4)
Concurrent statements and concurrent code (chapter 5)
Sequential statements and sequential code (chapter 6)
Signals, variables, and constants (chapter 7)
Design of finite state machines (chapter 8)
Additional circuit designs (chapter 9)
Thus, in terms of figure 10.1, we may say that we have covered in detail all that is needed to construct the type of code depicted on its left-hand side. A good understanding of that material is indispensable, regardless of the design being just a small circuit or a very large system.
In Part II, we will simply add new building blocks to the material already presented. These new building blocks are intended mainly for library allocation, being shown on the right-hand side of figure 10.1. They are:
Packages (chapter 10)
Components (chapter 10)
Functions (chapter 11)
Procedures (chapter 11)
These new units can be located in the main code itself (that is, on the left-hand side of figure 10.1). However, since their main purpose is to allow common pieces of code to be reused and shared, it is more usual to place them in a LIBRARY. This also leads to code partitioning, which is...