Chapter 3 Functional Models
Functional models are the mainstay of many design and verification
flows and there have been many languages defined to help improve
the efficiency and/or effectiveness of these models. This chapter
will explore the most common languages that are in use today and
the ways in which they can be used. Small examples will be given
in this chapter to show the fundamental aspects of these languages
and will compare and contrast some of the languages so that informed
decisions can be made regarding the best ones to choose for particular
situations. In some of the later chapters of this book, we will
also see examples of those languages in use.
We can divide the models into two general categories. First and
most important are dynamic models - otherwise known as executable
(or "simulatable" simulation) models. The second category is formal
models. These tend to be declarative models as opposed to the
imperative models used in the first category. We will illustrate
declarative models with property and constraint languages.
The dynamic models can themselves be divided into two broad categories:
algorithmic and architectural models. Associated with each of
these are two categories of languages - the algorithmic ones feature
most prominently mathematical modeling languages such as The Mathworks
Matlab; and dataflow modeling languages such as The Mathworks
Simulink, Signal Processing Designer (was SPW) from CoWare, System
Studio from Synopsys, and research languages such as Ptolemy/Ptolemy
II from UC Berkeley. For architectural modeling, which manifests
itself on several levels ranging from IP modeling all the way
up to full system modeling, dialects of C/C++, with SystemC being
most prominent, are traditionally used.
C/C++/SystemC are also used for algorithmic modeling, with C
(or C++) being very prominently used to model standards in signal
and image processing. Standards groups very often develop and
release reference implementations of the standard as a set of
C or C++ models, with associated test stimuli and expected response
files.
3.1 Dynamic Models and Languages
3.1.1 Algorithmic Languages
3.1.2 Architectural Modeling Languages:
SystemC
3.1.3 Architectural Models
3.2 Formal Models
3.2.1 Property languages
3.3 References
|