This project deals with the implementation and timing analysis of a Floating-Point Adder design. The implementation is based on a paper “On the Design of Fast IEEE Floating-Point Adders”, written by Peter-M. Seidel and Guy Even.
The FP-Adder RTL design was written in Verilog hardware description language, it was simulated using Cadence NC-Verilog simulator and synthesized using Synopsys Design Compiler.
The functional verification of the design was based on an exhaustive set of test vectors generated using s2b-api software written by Shahr Bar-Or. The expected results were calculated using MATLAB software written by Arnon Warshavski and Eran Eidinger with some modifications.
The test vectors were injected by a test-bench and the simulation results were compared against the expected pre-calculated results in order to approve the correct functionality of the FP-add design.
The timing analysis was based on the Synopsys DC’s timing reports.
Using UMC's 0.15-micron process technology library (UMC015) we got the following results:
Pipeline stage |
Critical path source |
Critical path destination |
delay |
Normalized delay |
1st cycle |
EA[0] |
FOPSUM[6] |
2.61 [nsec] |
9.6 [logic level] |
2nd cycle |
P[33] |
Eout[10] |
3.89 [nsec] |
14.4 [logic level] |
From the table it can be seen that the FP-add can operate in 250 MHz.
The FP-add design can be converted easily into one stage
pipeline, with delay of approximately 6.5 [nsec] which means ~150 Mhz.
The database structure includes four directories:
RTL sources: src
RTL simulation: sim
RTL test vectors: stimulus
Synthesis: synth
This directory includes a verilog description of the:
This directory includes:
This directory includes the input test vectors and expected
results. These files were read by the testbench.
The text files stimulus\fpadd_in1.txt
and stimulus\fpadd_out1.txt include
inputs and expected results vectors from where the entire list above was
extracted.
This directory includes four sub-directories each includes a synthesis script and a verilog netlist:
A summery of the timing results were summarized in the files: