Project SEC: Design-Space Exploration for a Second-Order IIR Filter
This project is one of the possibilities to perform the examination for
the
VLSI System Design course at the University of Twente. You can
start working on this project after completing the introductory
projects
VHD,
SYN, and
ADD.
The goals of this project are to explore the design space for a small
algorithm to be implemented on silicon. Currently, the design space exploration
amounts to optimize the design and observe the relation between area and
time. In the future, power will be added as a third parameter to be optimized.
The description below refers to various file names. These files are not
available on-line. Once you have logged in, execute the command
get-sec to get them or copy them from
the directory
/home/practice/vlsisd/exercise/modules/sec.
The Filter
The figure below gives the data-flow graph (DFG) and z-domain description
of the filter to be designed. The DFG represents the so-called
transposed
form of a second-order infinite impulse response filter. The
delay element before the output has been introduced for implementation
reasons; in this way, the output of the filter corresponds to the contents
of a register.
VHDL Files
You will need the following files to get started:
-
The file second-ent.vhd contains the entity for the design.
The file second-parallel-arch.vhd describes
a 1-to-1 mapping of the DFG to hardware.
The entire filter except for the multipliers is described in a behavioral
way.
-
The file mymult.vhd contains a behavioral descriptions of a multiplier.
One of the objectives of this project is to replace this multiplier by
a structural description of your own.
-
The file tb-second.vhd (needs to be compiled for VHDL 93) contains the entities for the testbench:
-
The entity testvec_second, the test-vector generator, provides
the clock and reset signals, as well as the inputs for the filter. The
input signal xn is read from a file called second.in.
The version of the file that you receive, is a input file for the calculation
of an impulse response, i.e. a maximally positive value as a first sample
followed by zeroes. The output yn is stored in a file second.out.
A reference output second.ref contains the expected output when
calculating the impulse response. You can verify the correctness of your
implementation by comparing second.out with second.ref
(use e.g. the Unix diff command to compare files). The entity
has been prepared for to deal with wide range of different implementations.
You can adapt it to your implementation by providing the correct values
for its generic parameters for iteration period, latency and clock period.
-
The entity tb_second instantiates the design and the test-vector
generator and interconnects them. One needs to define suitable configurations
for this top-level entity in order to simulate different versions of the
design. This configuration can set the generics of testvec_second.
Synthesis
The shell script generate-design, that was used for project
"SYN", can be used as well here to synthesize the
filter. In the version provided for this project,
apart from constraining the clock period, the path from any input to any
register is constrained as well. This is the consequence of the fact that
the input sample and coefficients are not first clocked into a register.
There is, therefore, a considerable combinational path from the inputs
to the registers. It has been chosen to make the constraint on this path
equal to the clock period.
Exercise SEC-1: Synthesis, Pre-Syntheis and Post-Synthesis Simulation
There are first a few actions that everybody should perform to make sure
that all files are present and to understand the basics of the problem:
-
Perform a pre-synthesis simulation of the filter and verify that the file
second.out contains the correct data.
Make use of the configuration
as given in the file config-second-pre.vhd.
Note:
It may be that Modelsim only writes the contents of
second.out on disk after terminating the current simulation.
-
Synthesize the provided description that is the 1-to-1 implementation of
the DFG, for a few different clock periods using the script
generate-design.
Record the (time, area) pairs as a reference for comparison with other
design variant that you will make. It also makes sense to record which
part of the area is used by multipliers, adders and other hardware.
-
Perform a post-synthesis simulation of the filter. Use the configuration
as given in config_second_post40.vhd as a template.
Exercise SEC-2: Design-Space Exloration
Now, you are more or less free to explore the design space by investigating
various design alternatives. Continue exploring the design space until
the time available for this project has been consumed (remember that the
entire practical part including the preparatory adder characterization
and all reports should take some 60 hours).
Here are some suggestions and points to take into account:
-
Replace the behavioral description of the multiplier by a structural one.
This is optional if you are working alone, but
compulsory for teams consisting
of at least two students. Remember that the multiplier operands are signed.
-
What improvements can be achieved by retiming and
pipelining?
-
The largest subblock in the design is the multiplier and reducing the number
of multipliers is likely to save area. Make a design containing 1, 2 or
3 multipliers that uses multiple clock cycles per sample (how many?). Such
a design will normally require more registers and multiplexers than the
fully parallel design. Try to quantify this overhead by studying the log
files.
-
Of course, the correctness of each design alternative has to be verified
by both a pre-synthesis and a post-synthesis simulation.
-
Make an area-versus-time plot of all design alternatives. Do you see a
hyperbolic relation (one often claims that the area-time product for
VLSI designs is constant)? Identify the Pareto-optimal solutions.
Deliverables
Write a report
(about 10 pages + appendices)
documenting the design.
Please pay sufficient attention to the quality of the report and
reserve some
10 of the 60 available hours for writing it
(see also the
hints for report writing that are actually meant for reports of a
larger size). You should especially pay attention to the design
choices made and their motivation.
Last update on:
Mon Mar 1 00:49:56 CET 2004
by
Sabih
Gerez.