- Implemented a 32 bit Arithmetic/Logic unit in VHDL using behavioral Modeling which involves all basic ALU operations including special functionality like binary-to-grey code conversion, parity check, sum of first N numbers. Simulation is performed in ModelSim IDE.
- Involved design using Cadence (Virtuoso Layout/Schematic) and Hspice simulation of standard library cell.
- Involved library characterization using NCX, RTL synthesis of VHDL code using Synopsys Design Vision, auto placement & routing using Encounter, static timing analysis using Synopsys Primetime.
result management system report for college project
ALU Chip Design Project
1. ALU Chip Design Project #6
1
The University of Texas at Dallas
Department of Electrical Engineering
EECT 6325 VLSI Design
“ALU CHIP DESIGN”
Team Members:
1) Bharat Biyani (2021152193)
2) Gaurav Kasar (2021177056)
3) Zarin Tasnim Pulam (2021186931)
2. ALU Chip Design Project #6
2
INDEX
Sr.No DESCRIPTION PAGE
1 Introduction 3
2 Block Diagram 3
3 Operation of ALU 4
4 VHDL code 4
5 Synthesized Verilog code 8
6 Cell count report 11
7 Individual gate design 13
8 Layout of ALU 14
9 Schematic of ALU 15
10 DRC Result 15
11 LVS Result 16
12 Prime time report 17
13 Waveform 23
14 Tradeoff and Conclusion 24
3. ALU Chip Design Project #6
3
INTRODUCTION
The report deals with generating the complete layout of the ALU by combining the
created cell library into a logic, using the Encounter tool. All the cells are designed to occupy
4 contacts in n-diff and 6 contacts in p-diff.
In the presented project, we have designed a 16 bit Arithmetic and Logical unit which
processes the given inputs and gives an output corresponding to the operation selected
using VHDL code. The design consists of two 16-bit input lines, a 4-bit select line, a clock
input and a 32-bit output line. The operations implemented are 11 which would be
presented in the document. The inputs are processed and the output is generated only on
falling edge of the clock. The diagram gives the clear understanding of the relation between
inputs and output based on the select lines. The VHDL code was simulated in the Modelsim
and the output waveforms were also verified for the given set of input values.
Inputs : Ip1 [16:0], Ip2[16:0], Clk, Cnt[3:0]
Output : Result [31:0]
BlOCK DIAGRAM
Ip1 [15:0]
Clk
Ip2 [15:0]
asdsd
ALU Result [31:0]
Cnt [3:0]
4. ALU Chip Design Project #6
4
OPERATIONS OF ALU
The following operations are performed by this ALU:
1) Arithmetic: Addition, Subtraction, Multiplication, Square of a number, Sum of N terms,
Increment and Decrement, parity Checker
2) Logical: AND, OR, XOR, Negation,
3) Shift operations: Left Shift, Right Shift
4) Conversion : Binary to Grey conversion
We started our design by writing VHDL code. We synthesized our code using SYNOPSYS tool
and number of cells were checked using a dummy library in the phase 2 of the project and
also checked with our design library in the phase 6 of the project.
Below is our VHDL codes and synthesized VERILOG code. We have also included cell final
count report which was generated at the end of phase 6 of the project.
VHDL CODE
-- Defining Library functions
library IEEE;
Use IEEE.STD_LOGIC_1164.ALL;
Use IEEE.NUMERIC_STD.ALL;
Use IEEE.STD_LOGIC_ARITH.ALL;
Use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Defining the Entity of ALU
-- Initializing the Input and OUPUT Ports
Entity ALU_n15 is
Port( Ip1 : IN Std_Logic_Vector(15 Downto 0);
Ip2 : IN Std_Logic_Vector(15 Downto 0);
Cnt : IN Std_Logic_Vector(3 Downto 0);
Clk : IN Std_logic;
Result: OUT Std_Logic_Vector(31 Downto 0));
End ALU_n15;
-- Working of the Entity ALU
Architecture Behavior of ALU_n15 is
-- Defining the signal
type state_type is (s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15);
Signal next_s: state_type := s15;
Begin
Process(Ip1, Ip2, Cnt, Clk, next_s)
-- Defining the temporary Variables to store the data
Variable temp : Std_Logic;
Variable temp1: Std_Logic_Vector(15 Downto 0);
Variable temp2: Std_Logic_Vector(31 Downto 0);
Variable temp3: Std_Logic_Vector(16 Downto 0);
Variable Sum : Std_Logic_Vector(31 Downto 0);
Variable g : Integer;
Begin
-- Code for detecting rising edge of Clock
If Clk = '1' and Clk'event Then
-- Defining the case statement to cover all range of Cnt signal
If Cnt <= "0000" Then --- For performing "Addition" operation
next_s <= s0;
Elsif Cnt <= "0001" Then --- For performing "Substraction" operation
next_s <= s1;
Elsif Cnt <= "0010" Then --- For performing "Multiplication" operation
5. ALU Chip Design Project #6
5
next_s <= s2;
Elsif Cnt <= "0011" Then --- For performing "And" Operation
next_s <= s3;
Elsif Cnt <= "0100" Then --- For performing "Or" Operation
next_s <= s4;
Elsif Cnt <= "0101" Then --- For performing "Xor" Operation
next_s <= s5;
Elsif Cnt <= "0110" Then --- For performing "Not" Operation of Ip2
next_s <= s6;
Elsif Cnt <= "0111" Then --- For performing "Increment by 1" operation of Ip2
next_s <= s7;
Elsif Cnt <= "1000" Then --- For performing "Decrement by 1" operation of Ip2
next_s <= s8;
Elsif Cnt <= "1001" Then --- For performing "left Shift by 1" operation of Ip2
next_s <= s9;
Elsif Cnt <= "1010" Then --- For performing "Right Shift by 1" operation of Ip2
next_s <= s10;
Elsif Cnt <= "1011" Then --- For performing "Parity Checker" operation of Ip2
next_s <= s11;
Elsif Cnt <= "1100" Then --- For performing "Binary to Grey" Conversion of Ip2
next_s <= s12;
Elsif Cnt <= "1101" Then --- For performing "Square" operation of Ip2
next_s <= s13;
Elsif Cnt <= "1110" Then --- For performing "Sum of first N terms" operation(N = Ip2)
next_s <= s14;
Else
next_s <= s15;
End If;
-- code of finite state machine
Case next_s is
-- Code for Addition of Ip1 and Ip2
-- Sum variable to store Sum and temp variable to store Carry
When s0 =>
temp := '0';
For i in 0 to 15 Loop
Sum(i) := Ip1(i) XOR Ip2(i) XOR temp;
temp := (Ip1(i) AND Ip2(i)) OR (Ip2(i) AND temp) OR (temp AND Ip1(i));
End loop;
Sum(16) := temp;
Sum(31 Downto 17) := "000000000000000";
Result <= Sum;
-- Code for Subtraction of Ip1-Ip2
-- Sum variable to store subtraction and temp variable to store Borrow
When s1 =>
temp := '0';
If Ip2 = "0000000000000000" Then
Sum(15 Downto 0) := Ip1;
Sum(31 Downto 16) := "0000000000000000";
Result <= Sum;
Else
temp1 := NOT(Ip2); --- performing 2's Complement of Ip2
temp1 := temp1 + "0000000000000001";
For i in 0 to 15 Loop
Sum(i) := Ip1(i) XOR temp1(i) XOR temp;
temp := (Ip1(i) AND temp1(i)) OR (temp1(i) AND temp) OR (temp AND Ip1(i));
End Loop;
-- Assigning the sign to output signal as per the borrow(result is positive or negative)
If temp = '0' Then
Sum(31 Downto 16) := "1111111111111111";
Else
Sum(31 Downto 16) := "0000000000000000";
End If;
Result <= Sum;
End If;
-- Code for Multiplication of Ip1 and Ip2 (each bit of Ip1 with complete Ip2)
When s2=>
temp := '0';
temp2 := "0000000000000000" & Ip2;
For i in 0 to 15 Loop
If temp2(0)='1' Then --- if the 0th bit of Ip2 is 1
6. ALU Chip Design Project #6
6
temp3 := ('0' & Ip1) + ('0' & temp2(31 Downto 16));
temp2 := temp3 & temp2(15 Downto 1);
Else --- if the 0th bit of Ip2 is 0
temp2 := '0' & temp2(31 Downto 1);
End If;
End Loop;
Sum := temp2;
Result <= Sum;
-- Code for AND function of Ip1 and Ip2
When s3 =>
temp := '0';
For i in 0 to 15 Loop
Sum(i):= Ip1(i) AND Ip2(i);
End Loop;
Sum(31 Downto 16) := "0000000000000000";
Result <= Sum;
-- Code for OR function of Ip1 and Ip2
When s4=>
temp := '0';
For i in 0 to 15 Loop
Sum(i):= Ip1(i) OR Ip2(i);
End Loop;
Sum(31 Downto 16) := "0000000000000000";
Result <= Sum;
-- Code for XOR function of Ip1 and Ip2
When s5 =>
temp := '0';
For i in 0 to 15 Loop
Sum(i):= Ip1(i) XOR Ip2(i);
End Loop;
Sum(31 Downto 16) := "0000000000000000";
Result <= Sum;
-- Code for NOT function of Ip2
When s6 =>
temp := '0';
For i in 0 to 15 Loop
Sum(i):= NOT(Ip2(i));
End Loop;
Sum(31 Downto 16) := "0000000000000000";
Result <= Sum;
-- Code for Increment by 1 of Ip2
When s7 =>
temp := '0';
temp1 := Ip2 ;
-- Checking whether the Ip2 is already maximum
If Ip2 = "1111111111111111" then
Sum(31 Downto 17) := "000000000000000";
Sum(16) := '1';
Sum(15 Downto 0) := "0000000000000000";
Else
-- Increment by 1
temp1 := temp1 + "0000000000000001";
Sum(31 Downto 16) := "0000000000000000";
Sum(15 Downto 0) := temp1;
End If;
Result <= Sum;
-- Code for Decrement by 1 of Ip2
When s8 =>
temp := '0';
temp1 := Ip2;
-- Checking whether the Ip2 is already minimum
If Ip2 = "0000000000000000" Then
Sum(31 Downto 0) := "11111111111111111111111111111111";
Else
-- Decrement by 1
temp1 := temp1 - "0000000000000001";
Sum(15 Downto 0) := temp1;
Sum(31 Downto 16) := "0000000000000000";
7. ALU Chip Design Project #6
7
End If;
Result <= Sum;
-- Code for Left Shift of Ip2
When s9 =>
temp1 := Ip2 ;
temp := temp1(15);
g := 15;
for i in 0 to 14 Loop
temp1(g) := temp1(g-1);
g := g - 1;
End Loop;
temp1(0) := '0';
Sum(16) := temp;
Sum(15 Downto 0) := temp1;
Sum(31 Downto 17) := "000000000000000";
temp := '0';
Result <= Sum;
-- Code for Right Shift of Ip2
When s10 =>
temp1 := Ip2 ;
temp := temp1(0);
For i in 0 to 14 Loop
temp1(i) := temp1(i+1);
End Loop;
temp1(15) := '0';
Sum(15 Downto 0) := temp1;
Sum(31 Downto 16) := "0000000000000000";
temp := '0';
Result <= Sum;
-- Code for Parity Checker
-- Result signal will be '1' if odd number of 1's in Ip2
-- Result signal will be '0' if even number of 1's in Ip2
When s11 =>
temp := '0';
temp1 := Ip2;
For i in 1 to 15 Loop
temp1(i) := temp1(i-1) XOR temp1(i);
End Loop;
If temp1(15) = '1' Then
Sum := "00000000000000000000000000000001";
Else
Sum := "00000000000000000000000000000000";
End If;
Result <= Sum;
-- Code for Binary to Gray Conversion
When s12 =>
temp := '0';
temp1 := Ip2;
Sum(15) := temp1(15);
For i in 0 to 14 Loop
Sum(i) := temp1(i+1) XOR temp1(i);
End Loop;
Sum(31 Downto 16) := "0000000000000000";
Result <= Sum;
-- Code for Square Function
When s13 =>
temp := '0';
temp1 := Ip2;
Sum := temp1 * temp1;
Result <= Sum;
-- Code for Sum of N Terms
When s14 =>
temp1 := Ip2;
-- Detect the Boundry Condition i.e. Ip1 = 65535
If temp1 = "1111111111111111" Then
temp2 := temp1 * (temp1 - 1);
-- Add the Offset
temp2 := temp2 + "00000000000000011111111111111110";
Else
temp2 := temp1 * (temp1 + 1);
8. ALU Chip Design Project #6
8
End if;
temp := temp2(0);
-- Code to divide the temp2 value by 2
For i in 0 to (30) Loop
temp2(i) := temp2(i+1);
End Loop;
temp2(31) := '0';
Sum := temp2 ;
Result <= Sum;
-- Code for unallocated Control Bits
When s15 =>
Sum := "00000000000000000000000000000000";
Result <= Sum;
End Case; --- End of Case statements
End If;
End Process; --- End Process
End Behavior;
SYNTHESIZED VERILOG CODE
Header:
module inv(inb, outb);
input inb;
output outb;
assign outb = ~inb;
endmodule
module nand2(a, b, outb);
input a, b;
output outb;
assign outb = ~(a & b);
endmodule
module nor2(a, b, outb);
input a, b;
output outb;
assign outb = ~(a | b);
endmodule
module xor2(a, b, outb);
input a, b;
output outb;
assign out = (a ^ b);
endmodule
module aoi22(a, b, c, d, outb);
input a, b, c, d;
output outb;
assign outb = ~((a & b) | (c & d));
endmodule
module oai3222(a, b, c, d, e, f, g, h, i, outb);
input a, b, c, d, e, f, g, h, i;
output outb;
assign outb = ~((a | b | c) & (d | e) & (f | g) & (h | i));
endmodule
module mux21(a, b, s, outb);
input a, b, s;
output outb;
assign outb = (((~s)&a) | (s & b));
endmodule
module dff( d, clock, reset, q);
input d, clock, reset;
output q;
reg q;
always @(negedge clock or reset)
if (reset == 1'b1)
12. ALU Chip Design Project #6
12
****************************************
Report : cell
Design : ALU_n15_1
Version: D-2010.03-SP3
Date : Sun Dec 15 15:33:58 2013
****************************************
Attributes:
b - black box (unknown)
h - hierarchical
n - noncombinational
r - removable
u - contains unmapped logic
Cell Reference Library Area Attributes
--------------------------------------------------------------------------------
Result_reg[0] dff lib_all 76.800003 n
Result_reg[1] dff lib_all 76.800003 n
Result_reg[2] dff lib_all 76.800003 n
Result_reg[3] dff lib_all 76.800003 n
Result_reg[4] dff lib_all 76.800003 n
Result_reg[5] dff lib_all 76.800003 n
Result_reg[6] dff lib_all 76.800003 n
Result_reg[7] dff lib_all 76.800003 n
.
.
.
.
.
.
lib_all 15.360000
U5379 nand2 lib_all 15.360000
U5380 nand2 lib_all 15.360000
U5381 nand2 lib_all 15.360000
U5382 nand2 lib_all 15.360000
U5383 nand2 lib_all 15.360000
U5384 nand2 lib_all 15.360000
U5385 nand2 lib_all 15.360000
U5386 nand2 lib_all 15.360000
U5387 nand2 lib_all 15.360000
U5388 nand2 lib_all 15.360000
U5389 nor2 lib_all 15.360000
U5390 nor2 lib_all 15.360000
next_s_reg[0] dff lib_all 76.800003 n
next_s_reg[1] dff lib_all 76.800003 n
next_s_reg[2] dff lib_all 76.800003 n
next_s_reg[3] dff lib_all 76.800003 n
--------------------------------------------------------------------------------
Total 4531 cells 74242.560727
***** End Of Report ****
13. ALU Chip Design Project #6
13
INDIVIDUAL GATE DESIGN
As a part of project phase 4 and 5, individual logic gates of our cell library was generated
using cadence software. The layout, abstract views and schematics and the output
waveforms were verified for the following logic gates
1. Inverter
2. NAND gate
3. NOR gate
4. AOI21 gate
5. OA322 gate
6. XOR gate
7. Multiplexer
8. D-flipflop
We have already submitted layout, schematic and waveform of individual logic gates stating
the correct functionality.
PLACING AND ROUTING
Cadence Encounter is used for the automatic placement and routing of synthesized verilog
netlist. DRC and LVS are performed to check for errors .
Sym
bol
View:
17. ALU Chip Design Project #6
17
PRIME TIME REPORT
Primetime result values are highlighted in the above report. . Summary of auto genetated
report by prime time are mentioned in below report:
PrimeTime (R)
PrimeTime (R) SI
PrimeTime (R) PX
Version D-2010.06-SP1 for suse64 -- Jul 15, 2010
Copyright (c) 1988-2010 by Synopsys, Inc.
ALL RIGHTS RESERVED
This program is proprietary and confidential information of Synopsys, Inc.
and may be used and disclosed only as authorized in a license agreement
controlling such use and disclosure.
###############################################################
# Define search path verilog file and library and variables
###############################################################
set search_path "~/cad/files/"
~/cad/files/
source variables1
reset
###############################################################
# link library
###############################################################
#set link_library $library_file
#set target_library $library_file
set link_library [list $library_file ]
~/cad/files/library.db
set target_library [list $library_file ]
~/cad/files/library.db
###############################################################
# link design
###############################################################
remove_design -all
Error: Nothing matched for designs: there are none loaded (SEL-005)
0
read_verilog $verilog_file
Loading verilog file '/home/eng/b/bxb125030/cad/files/mainVCode_syn.v'
1
###############################################################
# Define IO parameters
###############################################################
set_driving_cell -lib_cell $driving_cell -input_transition_rise $input_transition -input_transition_fall $input_transition [all_inputs]
Loading db file '/home/eng/b/bxb125030/cad/files/library.db'
Linking design ALU_n15...
Information: Issuing set_operating_conditions for setting analysis mode on_chip_variation. (PTE-037)
set_operating_conditions -analysis_type on_chip_variation -library [get_libs {library.db:lib_all}]
1
set_load $load [all_outputs]
1
###############################################################
###############################################################
#define the clock - for comb circuit we may not need to use any clock
###############################################################
create_clock -name clk -period $clock_period [get_ports $clock_pin_name]
1
set_clock_transition -rise -max $input_transition [get_clocks clk]
1
set_clock_transition -fall -max $input_transition [get_clocks clk]
1
###############################################################
# set condition
###############################################################
set timing_slew_propagation_mode worst_slew
worst_slew
set timing_report_unconstrained_paths true
18. ALU Chip Design Project #6
18
true
set power_enable_analysis true
true
set_disable_timing [get_ports $reset_pin_name]
Warning: No port objects matched 'reset' (SEL-004)
Error: Nothing matched for ports (SEL-005)
Error: Nothing matched for object_list (SEL-005)
###############################################################
# analyze delay and power
###############################################################
check_timing
Warning: Some timing arcs have been disabled for breaking timing loops
or because of constant propagation. Use the 'report_disable_timing'
command to get the list of these disabled timing arcs. (PTE-003)
Information: Checking 'no_input_delay'.
Warning: There are 36 ports with no clock-relative input delay specified.
Since the variable 'timing_input_port_default_clock' is 'true',
a default input port clock will be assumed for these ports.
Information: Checking 'no_driving_cell'.
Information: Checking 'unconstrained_endpoints'.
Warning: There are 32 endpoints which are not constrained for maximum delay.
Information: Checking 'unexpandable_clocks'.
Information: Checking 'latch_fanout'.
Information: Checking 'no_clock'.
Information: Checking 'partial_input_delay'.
Information: Checking 'generic'.
Information: Checking 'loops'.
Information: Checking 'generated_clocks'.
Information: Checking 'pulse_clock_non_pulse_clock_merge'.
Information: Checking 'pll_configuration'.
0
update_timing
1
report_timing -transition_time -delay min_max -capacitance -input_pins
****************************************
Report : timing
-path_type full
-delay_type min_max
-input_pins
-max_paths 1
-transition_time
-capacitance
Design : ALU_n15
Version: D-2010.06-SP1
Date : Thu Dec 12 19:37:35 2013
****************************************
Startpoint: Cnt[0] (input port)
Endpoint: next_s_reg[0]
(falling edge-triggered flip-flop clocked by clk')
Path Group: clk
Path Type: min
Point Cap Trans Incr Path
-----------------------------------------------------------------------------
clock (input port clock) (rise edge) 0.00 0.00
clock network delay (ideal) 0.00 0.00
input external delay 0.00 0.00 f
Cnt[0] (in) 4.77 10.34 4.83 4.83 f
next_s_reg[0]/d (dff) 10.34 0.00 4.83 f
data arrival time 4.83
clock clk' (fall edge) 20.00 0.00 0.00
clock network delay (ideal) 0.00 0.00
next_s_reg[0]/clock (dff) 0.00 f
library hold time 2.60 2.60
data required time 2.60
-----------------------------------------------------------------------------
data required time 2.60
data arrival time -4.83
19. ALU Chip Design Project #6
19
-----------------------------------------------------------------------------
slack (MET) 2.23
Startpoint: Ip2[1] (input port)
Endpoint: Result_reg[30]
(falling edge-triggered flip-flop clocked by clk')
Path Group: clk
Path Type: max
Point Cap Trans Incr Path
-----------------------------------------------------------------------------
clock (input port clock) (rise edge) 0.00 0.00
input external delay 0.00 0.00 r
Ip2[1] (in) 140.12 236.49 195.05 195.05 r
U1081/inb (inv) 236.49 0.00 195.05 r
U1081/outb (inv) 21.67 65.16 71.20 266.26 f
U5374/b (nor2) 65.16 0.00 266.26 f
U5374/outb (nor2) 12.24 61.04 80.95 347.21 r
U5371/a (nand2) 61.04 0.00 347.21 r
U5371/outb (nand2) 11.85 33.79 48.03 395.24 f
U5369/a (nand2) 33.79 0.00 395.24 f
U5369/outb (nand2) 4.80 28.20 32.57 427.81 r
U5368/b (nand2) 28.20 0.00 427.81 r
U5368/outb (nand2) 15.91 32.09 44.49 472.30 f
U5366/a (nor2) 32.09 0.00 472.30 f
U5366/outb (nor2) 4.82 39.89 52.72 525.02 r
U5365/inb (inv) 39.89 0.00 525.02 r
U5365/outb (inv) 4.35 14.29 20.56 545.58 f
U5363/a (aoi22) 14.29 0.00 545.58 f
U5363/outb (aoi22) 9.39 49.78 61.54 607.13 r
U5358/inb (inv) 49.78 0.00 607.13 r
U5358/outb (inv) 11.46 22.53 32.74 639.87 f
U5267/b (xor2) 22.53 0.00 639.87 f
U5267/outb (xor2) 7.36 26.79 70.83 710.70 f
U5266/b (xor2) 26.79 0.00 710.70 f
U5266/outb (xor2) 11.71 33.85 77.14 787.84 f
U5250/a (aoi22) 33.85 0.00 787.84 f
U5250/outb (aoi22) 16.93 7.37 86.90 874.74 r
U5161/b (xor2) 67.37 0.00 874.74 r
U5161/outb (xor2) 7.68 53.49 83.42 958.17 r
U5160/a (xor2) 53.49 0.00 958.17 r
U5160/outb (xor2) 12.36 67.30 105.93 1064.10 r
U5159/inb (inv) 67.30 0.00 1064.10 r
U5159/outb (inv) 4.35 19.00 23.46 1087.56 f
U5143/a (aoi22) 19.00 0.00 1087.56 f
U5143/outb (aoi22) 16.93 67.37 80.26 1167.82 r
U5058/b (xor2) 67.37 0.00 1167.82 r
U5058/outb (xor2) 7.68 53.11 83.42 1251.24 r
U5057/a (xor2) 53.11 0.00 1251.24 r
U5057/outb (xor2) 12.36 67.27 105.87 1357.11 r
U5056/inb (inv) 67.27 0.00 1357.11 r
U5056/outb (inv) 4.35 18.99 23.46 1380.57 f
U5040/a (aoi22) 18.99 0.00 1380.57 f
U5040/outb (aoi22) 16.93 67.37 80.26 1460.83 r
U4950/b (xor2) 67.37 0.00 1460.83 r
U4950/outb (xor2) 7.68 53.11 83.42 1544.25 r
U4949/a (xor2) 53.11 0.00 1544.25 r
U4949/outb (xor2) 12.36 67.27 105.87 1650.12 r
U4948/inb (inv) 67.27 0.00 1650.12 r
U4948/outb (inv) 4.35 18.99 23.46 1673.58 f
U4932/a (aoi22) 18.99 0.00 1673.58 f
U4932/outb (aoi22) 16.93 67.37 80.26 1753.84 r
U4846/b (xor2) 67.37 0.00 1753.84 r
U4846/outb (xor2) 7.68 53.11 83.42 1837.26 r
U4845/a (xor2) 53.11 0.00 1837.26 r
U4845/outb (xor2) 12.36 67.28 105.87 1943.13 r
U4844/inb (inv) 67.28 0.00 1943.13 r
U4844/outb (inv) 4.35 18.99 23.46 1966.59 f
U4828/a (aoi22) 18.99 0.00 1966.59 f
U4828/outb (aoi22) 16.93 67.37 80.26 2046.85 r
U4733/b (xor2) 67.37 0.00 2046.85 r
U4733/outb (xor2) 7.68 53.11 83.42 2130.27 r
20. ALU Chip Design Project #6
20
U4732/a (xor2) 53.11 0.00 2130.27 r
U4732/outb (xor2) 12.36 67.27 105.87 2236.14 r
U4731/inb (inv) 67.27 0.00 2236.14 r
U4731/outb (inv) 4.35 18.99 23.46 2259.60 f
U4715/a (aoi22) 18.99 0.00 2259.60 f
U4715/outb (aoi22) 16.93 67.37 80.26 2339.86 r
U4630/b (xor2) 67.37 0.00 2339.86 r
U4630/outb (xor2) 7.68 53.11 83.42 2423.28 r
U4629/a (xor2) 53.11 0.00 2423.28 r
U4629/outb (xor2) 12.36 67.27 105.87 2529.15 r
U4628/inb (inv) 67.27 0.00 2529.15 r
U4628/outb (inv) 4.35 18.99 23.46 2552.61 f
U4612/a (aoi22) 18.99 0.00 2552.61 f
U4612/outb (aoi22) 16.93 67.37 80.26 2632.87 r
U4516/b (xor2) 67.37 0.00 2632.87 r
U4516/outb (xor2) 7.68 53.11 83.42 2716.28 r
U4515/a (xor2) 53.11 0.00 2716.28 r
U4515/outb (xor2) 12.36 67.27 105.87 2822.16 r
U4514/inb (inv) 67.27 0.00 2822.16 r
U4514/outb (inv) 4.35 18.99 23.46 2845.62 f
U4498/a (aoi22) 18.99 0.00 2845.62 f
U4498/outb (aoi22) 16.93 67.37 80.26 2925.87 r
U4413/b (xor2) 67.37 0.00 2925.87 r
U4413/outb (xor2) 7.68 53.11 83.42 3009.29 r
U4412/a (xor2) 53.11 0.00 3009.29 r
U4412/outb (xor2) 12.36 67.27 105.87 3115.17 r
U4411/inb (inv) 67.27 0.00 3115.17 r
U4411/outb (inv) 4.35 18.99 23.46 3138.63 f
U4395/a (aoi22) 18.99 0.00 3138.63 f
U4395/outb (aoi22) 16.93 67.37 80.26 3218.88 r
U4299/b (xor2) 67.37 0.00 3218.88 r
U4299/outb (xor2) 7.68 53.11 83.42 3302.30 r
U4298/a (xor2) 53.11 0.00 3302.30 r
U4298/outb (xor2) 12.36 67.27 105.87 3408.18 r
U4297/inb (inv) 67.27 0.00 3408.18 r
U4297/outb (inv) 4.35 18.99 23.46 3431.63 f
U4281/a (aoi22) 18.99 0.00 3431.63 f
U4281/outb (aoi22) 16.93 67.37 80.26 3511.89 r
U4196/b (xor2) 67.37 0.00 3511.89 r
U4196/outb (xor2) 7.68 53.11 83.42 3595.31 r
U4195/a (xor2) 53.11 0.00 3595.31 r
U4195/outb (xor2) 12.36 67.27 105.87 3701.18 r
U4194/inb (inv) 67.27 0.00 3701.18 r
U4194/outb (inv) 4.35 18.99 23.46 3724.64 f
U4178/a (aoi22) 18.99 0.00 3724.64 f
U4178/outb (aoi22) 16.93 67.37 80.26 3804.90 r
U4082/b (xor2) 67.37 0.00 3804.90 r
U4082/outb (xor2) 7.68 53.11 83.42 3888.32 r
U4081/a (xor2) 53.11 0.00 3888.32 r
U4081/outb (xor2) 12.36 67.27 105.87 3994.19 r
U4080/inb (inv) 67.27 0.00 3994.19 r
U4080/outb (inv) 4.35 18.99 23.46 4017.65 f
U4064/a (aoi22) 18.99 0.00 4017.65 f
U4064/outb (aoi22) 16.93 67.37 80.26 4097.91 r
U4061/a (nand2) 67.37 0.00 4097.91 r
U4061/outb (nand2) 4.32 24.95 33.97 4131.88 f
U4059/b (aoi22) 24.95 0.00 4131.88 f
U4059/outb (aoi22) 16.93 67.37 89.17 4221.06 r
U4056/a (nand2) 67.37 0.00 4221.06 r
U4056/outb (nand2) 4.32 24.95 33.97 4255.03 f
U4054/b (aoi22) 24.95 0.00 4255.03 f
U4054/outb (aoi22 16.93 67.37 89.17 4344.20 r
U4051/a (nand2) 67.37 0.00 4344.20 r
U4051/outb (nand 4.32 24.95 33.97 4378.18 f
U4049/b (aoi22) 24.95 0.00 4378.18 f
U4049/outb (aoi22 16.93 67.37 89.17 4467.35 r
U4046/a (nand2) 67.37 0.00 4467.35 r
U4046/outb (nand 4.32 24.95 33.97 4501.32 f
U4044/b (aoi22) 24.95 0.00 4501.32 f
U4044/outb (aoi22 16.93 67.37 89.17 4590.50 r
U4041/a (nand2) 67.37 0.00 4590.50 r
U4041/outb (nand2) 4.32 24.95 33.97 4624.47 f
U4039/b (aoi22) 24.95 0.00 4624.47 f
U4039/outb (aoi22) 16.93 67.37 89.17 4713.64 r
21. ALU Chip Design Project #6
21
U4036/a (nand2) 67.37 0.00 4713.64 r
U4036/outb (nand2) 4.32 24.95 33.97 4747.61 f
U4034/b (aoi22) 24.95 0.00 4747.61 f
U4034/outb (aoi22) 16.93 67.37 89.17 4836.79 r
U4031/a (nand2) 67.37 0.00 4836.79 r
U4031/outb (nand2) 4.32 24.95 33.97 4870.76 f
U4029/b (aoi22) 24.95 0.00 4870.76 f
U4029/outb (aoi22) 16.93 67.37 89.17 4959.93 r
U4026/a (nand2) 67.37 0.00 4959.93 r
U4026/outb (nand2) 4.32 24.95 33.97 4993.91 f
U4024/b (aoi22) 24.95 0.00 4993.91 f
U4024/outb (aoi22) 16.93 67.37 89.17 5083.08 r
U3992/b (xor2) 67.37 0.00 5083.08 r
U3992/outb (xor2) 7.68 53.49 83.42 5166.50 r
U3991/a (xor2) 53.49 0.00 5166.50 r
U3991/outb (xor2) 12.36 67.28 105.93 5272.44 r
U3990/inb (inv) 67.28 0.00 5272.44 r
U3990/outb (inv) 4.35 18.99 23.46 5295.90 f
U3910/a (aoi22) 18.99 0.00 5295.90 f
U3910/outb (aoi22) 16.93 67.37 80.26 5376.15 r
U3907/a (nand2) 67.37 0.00 5376.15 r
U3907/outb (nand2) 4.32 24.95 33.97 5410.13 f
U3905/b (aoi22) 24.95 0.00 5410.13 f
U3905/outb (aoi22) 16.93 67.37 89.17 5499.30 r
U3902/a (nand2) 67.37 0.00 5499.30 r
U3902/outb (nand2) 4.32 24.95 33.97 5533.27 f
U3900/b (aoi22) 24.95 0.00 5533.27 f
U3900/outb (aoi22) 16.93 67.37 89.17 5622.45 r
U3897/a (nand2) 67.37 0.00 5622.45 r
U3897/outb (nand2) 4.32 24.95 33.97 5656.42 f
U3895/b (aoi22) 24.95 0.00 5656.42 f
U3895/outb (aoi22) 9.39 48.84 72.73 5729.15 r
U3891/inb (inv) 48.84 0.00 5729.15 r
U3891/outb (inv) 11.46 22.28 32.49 5761.64 f
U3876/b (xor2) 22.28 0.00 5761.64 f
U3876/outb (xor2) 7.46 30.06 70.83 5832.47 f
U3875/a (xor2) 30.06 0.00 5832.47 f
U3875/outb (xor2) 11.81 32.31 86.16 5918.63 f
U3782/a (aoi22) 32.31 0.00 5918.63 f
U3782/outb (aoi22) 16.93 67.37 86.23 6004.86 r
U3779/a (nand2) 67.37 0.00 6004.86 r
U3779/outb (nand2) 4.32 24.95 33.97 6038.83 f
U3777/b (aoi22) 24.95 0.00 6038.83 f
U3777/outb (aoi22) 13.70 59.40 82.10 6120.93 r
U3775/a (nor2) 59.40 0.00 6120.93 r
U3775/outb (nor2) 4.42 20.93 29.94 6150.87 f
U3774/inb (inv) 20.93 0.00 6150.87 f
U3774/outb (inv) 9.20 22.06 31.84 6182.72 r
U1154/a (nand2) 22.06 0.00 6182.72 r
U1154/outb (nand2) 7.36 19.15 29.25 6211.97 f
U1153/b (xor2) 19.15 0.00 6211.97 f
U1153/outb (xor2) 4.10 19.41 65.90 6277.87 f
U1152/d (aoi22) 19.41 0.00 6277.87 f
U1152/outb (aoi22) 4.80 37.73 42.58 6320.46 r
U1151/b (nand2) 37.73 0.00 6320.46 r
U1151/outb (nand2) 4.77 17.99 30.91 6351.37 f
Result_reg[30]/d (dff) 17.99 0.00 6351.37 f
data arrival time 6351.37
clock clk' (fall edge) 0.00 6400.00 6400.00
clock network delay (ideal) 0.00 6400.00
Result_reg[30]/clock (dff) 6400.00 f
library setup time -39.70 6360.30
data required time 6360.30
-----------------------------------------------------------------------------
data required time 6360.30
data arrival time -6351.37
-----------------------------------------------------------------------------
slack (MET) 8.93
1
update_power
Information: Checked out license 'PrimeTime-PX' (PT-019)
22. ALU Chip Design Project #6
22
Warning: Neither event file or switching activity data present for power estimation. The command will propagate switching activity
values for power calculation. (PWR-246)
Information: Running averaged power analysis... (PWR-601)
1
report_power
****************************************
Report : Averaged Power
Design : ALU_n15
Version: D-2010.06-SP1
Date : Thu Dec 12 19:37:37 2013
****************************************
Attributes
----------
i - Including register clock pin internal power
u - User defined power group
Internal Switching Leakage Total
Power Group Power Power Power Power ( %) Attrs
--------------------------------------------------------------------------------
io_pad 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
memory 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
black_box 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
clock_network 3.116e-04 4.094e-05 8.268e-10 3.526e-04 (23.11%) i
register 2.908e-05 1.679e-06 3.284e-07 3.109e-05 ( 2.04%)
combinational 5.384e-04 5.984e-04 4.893e-06 1.142e-03 (74.85%)
sequential 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
Net Switching Power = 6.410e-04 (42.02%)
Cell Internal Power = 8.791e-04 (57.63%)
Cell Leakage Power = 5.222e-06 ( 0.34%)
---------
Total Power = 1.525e-03 (100.00%)
1
Information: Defining new variable 'driving_cell'. (CMD-041)
Information: Defining new variable 'library_file'. (CMD-041)
Information: Defining new variable 'verilog_file'. (CMD-041)
Information: Defining new variable 'input_transition'. (CMD-041)
Information: Defining new variable 'clock_period'. (CMD-041)
Information: Defining new variable 'load'. (CMD-041)
Information: Defining new variable 'reset_pin_name'. (CMD-041)
Information: Defining new variable 'clock_pin_name'. (CMD-041)
1
pt_shell>
24. ALU Chip Design Project #6
24
TRADE- OFFS
1. There is trade - off between total power and the frequency of clock, if you increase the
frequency of clock, total power dissipation also increases.
2. There is a trade off between the width of the nmos to that of Energy Delay product
(EDP). The width of the nmos is very high in order to achieve minimum Energy Delay
product (EDP). Hence optimum value of the width was chosen.
3. In the D-flip flop design; there is trade off between height and width of DFF to that of
number of M2 used in designing the layout. M2 count increases as you reduce the height.
Hence a reasonable height is chosen.
FINAL DATA
Sr No. Parameters Values
1 Area of overall System 0.28 x 10-6
m2
2 Cell count without fillers 4531
3 Frequency of Clock 1.5 GHz
4 Total power 1.525mW
5 Number of operations 15
CONCLUSION
Considering the number of operation our ALU can perform, the designed ALU has very low
total power. In addition to that our system works on 1.5GHz frequency, which is very
efficient.