Lab #2:  Combinational Logic Synthesis
Objectives:
- To learn how variations in the partitioning of VHDL designs
may influence optimizations performed by synthesis tools.
 - To learn how to control optimization of the design to the
level of design objects.
 - To gain an appreciation of tradeoffs between area, performance
of the design, and the amount of effort required by the synthesis
tool required to achieve the optimizations.
 
Project:
- Create a design entity for an eight function logic unit with
std_logic:
- Vector inputs X and Y.
 - A three bit function selector input Fselect(0 to 2)
 - Vector output Z
 - Positive edge clocking.
 - The unit is to be N-bits wide, with the X, Y, Z attributes
being consistent and defining the width. Include assertions to
check that the attributes correspond.
 
 - Use only concurrent VHDL constructs to write an architecture
to implement the following functions:
	Fselect
        000     Z <= X
        001     Z <= not X
        010     Z <= X and Y
        011     Z <= X nand Y
        100     Z <= X or Y
        101     Z <= X nor Y
        110     Z <= X xor Y
        111     Z <= X xnor Y
There is to be an accumulator register to receive the result
of the function computation that drives the output Z.
 - Instantiate the design with a register width of 4, and simulate
the design to verify that is works correctly. Include generics
specifying values for gate and register delay for simulation purposes.
 - Synthesize the design with opt area -low and again
with opt area -high. How much benefit is there in going
to the higher level of optimization effort?
 - Rewrite the design as follows: Create a one-bit slice as a
separate entity, and instantiate it N times in a FOR-GENERATE
statement in the higher level architecture. 
 - Synthesize the design from step 5 with opt area -low and
again with opt area -high. How much benefit is there in
going to the higher level of optimization effort?
 - Find a way to get the synthesis tool to re-synthesize the
design so that the Fselect signals are decoded into enable signals
that drive tristate outputs from the functions instead of a final
stage multiplexor.
 - Note that Fselect(2) controls the inversion of function values
(100 = OR, 101=NOR, etc.). Has the synthesis automatically optimized
to take advantage of this? If not, modify the design to make this
happen.
 
Report
- For each VHDL description produced, include
- a listing of the compiled design, 
 - output of simulation that verifies the design is correct,
 
 - For each synthesis performed, include
- a synthesis report that includes area hierarchical and summary
information
 - a gate level schematic generated from the netlist.
 
 - Provide a discussion of the results from each step. 
 
Copyright 1997, Ben M. Huey 
Copying this document without the permission of the author is
prohibited and a violation of international copyright laws.
Rev. 2/25/97 B. Huey