CSCE 612
Simulation and Analysis of Digital Systems Using VHDL and SystemC
Course Materials
Course Background
In this course, we'll use the VHDL hardware description language to create models of digital systems and components. We'll look at the key architectural patterns used to create digital systems and we'll model systems applications using these pattern as components. We adopt an "object oriented" view of VLSI hardware design--we consider the architectural partitioning of systems based on "class" encapsulation, the organization of components based on "responsibility", and the "collaboration" of various components into higher-level systems behaviors.
We examine two broad categories of systems: (1) those which are "control dominated", i.e., are concerned with controlling the behavior of a digital system (or a digital mapping of an analog one), which includes such categories as network protocol engines, peripheral controllers and (even) CPUs themselves; and, (2) data path systems, i.e., those concerned with the operation on some form of data stream. This latter category includes models of circuits that perform basic arithmetic functions (addition, division, multiplication), filtering (FIR, IIR filter functions) and coding circuits (including encryption, compression, and error detection/correction).
We examine the construction of systems from two perspectives: top-down, and bottom-up. In a top-down perspective, we start with a functional description (probably represented using a collection of UML views) that is decomposed in a stepwise refinement fashion until behavioral or function primitives remain--which can then be implemented. We also examine systems that are constructed starting with a set of building blocks (such as a library) and construct the systems by configuring these smaller elements into larger ones.
This course is relevant from 3 different standpoints (in terms of types of work that exist in industry):
(1) model builders - those that build a set of model library primitives that are, in turn, used by others to build systems. The success of this effort depends on the breadth and scope of model components available, and follows the same type of "cottage" supplier business model that exists for object-oriented components built using CORBA, COM or .Net, or other OO framework.
(2) systems builders - those that either build systems from scratch (yes, there are some cases when this is necessary) or use libraries of component models as "scaffolding" to construct systems. With the advent of systems-on-chip, this is becoming a predominant means whereby electronics and computing based products find their way to market under extreme cost and delivery pressures.
(3) systems integrators - this is a "middle out" strategy, where a system may be partitioned, top-down, then at some level, utilizes a collection of models (at some level of abstraction and functional integration) to realize key functions. This is also used with systems-on-chip (SoC), in that a systems maker may use a microprocessor model "core" as the central component of a system to be integrated onto a single VLSI device, which is then augmented by additional model implemented as custom logic.
From my personal standpoint (and from my research into custom computing systems built using programmable logic devices), I believe that whole systems can be built out of custom logic models--without requiring the use of a microprocessor--and that the cost of building such a solution can be recouped in the initial project. Microprocessor cores generally have a sizable royalty structure associated with them, and so cost--along with performance, power minimization, and form factor--become reasons for adopting custom logic, which can be delivered with the flexibility and designer productivity using programmable logic devices, namely FPGAs.
The design method I teach for realizing high-productivity design and architecture analysis for programmable logic design is not part of this course, as I teach this in CSCE 611. However, I will be collecting designer productivity data and effort distribution data for all homework assignments and project assignments in this course to compare against data sets I've collected for designs carried out using higher level, graphical methods, namely the Algorithmic State Machine (ASM) method.