VTU Digital Lab Manual
VTU Digital Lab Manual
PART - B
3
LIST OF LAB EXPERIMENTS
4
Lab 1: 4-bit Up/Down Counter
Aim: To write a verilog code for 4bit up/down asynchronous rest counter and its test-bench for
verification.
Synthesizing the design by setting area and timing constraint and analyse reports.
Finding the critical path and maximum frequency of operations
Recording the power, area requirement and properties of each cell in terms of driving
strength.
Tool Required:
Functional Simulation: Incisive Simulator (ncvlog, ncelab, ncsim)
Synthesis: Genus
An up/down counter is a digital counter which can be set to count either from 0 to
MAX_VALUE or MAX_VALUE to 0.
The direction of the count(mode) is selected using a single bit input. The module has 3
inputs - clk, reset which is active high and a UpOrDown mode input. The output is Counter
which is 4 bit in size.
When Up mode is selected, counter counts from 0 to 15 and then again from 0 to 15.
When Down mode is selected, counter counts from 15 to 0 and then again from 15 to 0.
Changing mode doesn't reset the Count value to zero.
You have to apply high value to reset, to reset the Counter output.
In Desktop Create a folder to do the digital design flow. Right click in the Desktop and
select New Folder as shown in Figure1.2
It will create a folder like below and name it as Cadence_Digital_Labs
5
Figure No. 1.2: New Folder Creation
Create a new sub-Directory for the Design and open a terminal from the Sub-Directory.
6
Creating Source Codes
Use Save option or Ctrl+S to save the code or click on the save option from the top most
right corner and close the text file.
Similarly, create your test bench using gedit <filename_tb>.v or <filename_tb>.vhdl to open
a new blank document (4bup_down_count_tb.v).
7
Test-bench code for 4-Bit Up-Down Counter:
`timescale 1ns/1ps // Creating Time Scale as in Source Code
module counter_test; // Defining Module Name without Port List
reg clk, rst,m; // Defining I/P as Registers [to Hold Values]
wire [3:0] count; // Defining O/P as Wires [To Probe Waveforms]
Initial
begin
clk=0; // Initializing Clock and Reset
rst=0;#25; // All O/P is 4’b0000 from t=0 to t=25ns.
Rst=1; // Up-Down counting is allowed at posedge clk
end
initial
begin
m=1; // Condition for Up-Count
#600 m=0; // Condition for Down-Count
rst=0;#25;
rst=1;
#500 m=0;
end
counter counter1(clk,m,rst, count); // Instantiation of Source Code
always #5 clk=~clk; // Inverting Clk every 5ns
initial
#1400 $finish; // Finishing Simulation at t=1400ns
endmodule
Click on the Save option and it will look like the below window and then close the file
Figure No.1.5: Verilog and Tesbench file for 4bit updown counter
8
Functional Simulation:
• It will invoke the nclaunch window for functional simulation we can compile,elaborate and
simulate it using Multiple
9
Select Multiple Step and then select “Create cds.lib File” as shown in below figure
Click the cds.lib file and save the file by clicking on Save option
• Save cds.lib file and select the correct option for cds.lib file format based on the HDL
Language and Libraries used.
• Select “Don’t include any libraries (verilog design)” from “New cds.lib file” and click on
“OK” as in below figure
◦ We are simulating verilog design without using any libraries
10
• A Click “OK” in the “nclaunch: Open Design Directory” window as shown in below figure
Menu
Bar
Tool bar
Icons
Design
Area
File
Browser
Console
Window
11
To perform the function simulation, the following three steps are involved Compilation, Elaboration
and Simulation.
Step 1: Compilation:– Process to check the correct Verilog language syntax and usage
Inputs: Supplied are Verilog design and test bench codes
Outputs: Compiled database created in mapped library if successful, generates report else error
reported in log file
1. Create work/library directory (most of the latest simulation tools creates automatically)
2. Map the work to library created (most of the latest simulation tools creates automatically)
i.e Cadence IES command for compile: ncverilog +access+rwc -compile design.v
• Left side select the file and in Tools : launch verilog compiler with current selection will get
enable. Click it to compile the code
• Worklib is the directory where all the compiled codes are stored while Snapshot will have
output of elaboration which in turn goes for simulation
ncvlog for
Verilog Designs
12
• After compilation it will come under worklib you can see in right side window.
• Select the test bench and compile it. It will come under worklib. Under Worklib you can see
the module and test-bench.
The cds.lib file is an ASCII text file. It defines which libraries are accessible and where they are
located. It contains statements that map logical library names to their physical directory paths. For
this Design, you will define a library called “worklib”
13
Step 2: Elaboration:– To check the port connections in hierarchical design
Inputs: Top level design / test bench Verilog codes
Outputs: Elaborate database updated in mapped library if successful, generates report else error
reported in log file
Steps for elaboration – Run the elaboration command with elaborate options
5. It also establishes net connectivity and prepares all of this for simulation
i.e Cadence IES command for elaboration: ncverilog +access+rwc -elaborate design.v
14
• After elaboration the file will come under snapshot. Select the test bench and elaborate it.
ncsim for
Verilog Designs
Step 3: Simulation: – Simulate with the given test vectors over a period of time to observe the
output behaviour
Simulation allow to dump design and test bench signals into a waveform
Steps for simulation – Run the simulation command with simulator options
i.e Cadence IES command to run in GUI mode: ncsim -gui worklib.top level entity name
15
Run simulation Interrupt Simulation Zoom in, Zoom out
16
b) Synthesize the design using Constraints and analyse reports, critical path and
Max Operating Frequency.
i→ Creates a Clock named “clk” with Time Period 2ns and On Time from t=0 to t=1.
ii, iii → Sets Clock Rise and Fall time to 100ps.
iv → Sets Clock Uncertainty to 10ps.
v, vi → Sets the maximum limit for I/O port delay to 1ps.
17
Step 3 : Performing Synthesis
In the terminal, initialise the tools with the following commands if a new terminal is being
used.
◦ csh
◦ source /home/install/cshrc
The tool used for Synthesis is “Genus”. Hence, type “genus -gui” to open the tool.
The Following are commands to proceed,
1. read_libs /home/install/FOUNDRY/digital/90nm/dig/lib/slow.lib
2. read_hdl counter.v
3. elaborate
4. read_sdc constraints_top.sdc //Reading Top Level SDC
5. set_db syn_generic_effort medium //Effort level to medium for generic, mapping
and optimization
6. set_db syn_map_effort medium
7. set_db syn_opt_effort medium
8. syn_generic
9. syn_map
10. syn_opt //Performing Synthesis Mapping and Optimisation
11. report_timing > counter_timing.rep
//Generates Timing report for worst datapath and dumps into file
12. report_area > counter_area.rep
//Generates Synthesis Area report and dumps into a file
13. report_power > counter_power.rep
//Generates Power Report [Pre-Layout]
14. write_hdl > counter_netlist.v //Creates readable Netlist File
15. write_sdc > counter_sdc.sdc //Creates Block Level SDC
18
Figure No1.19: Genus Script file with .tcl file Extension
19
Commands 1-5 are intended for Synthesis process while 11-15 for Generating reports and Outputs.
Note :-
1) report_timing gives you the path with highest failing slack where
Setup Slack = Required Time – Arrival Time.
2) Worst Setup Slack ==> Highest Arrival time ==> Highest Propagation Delay.
3) Maximum Clock Frequency = 1/ (Max Data Path Delay – Min Clock Path Delay + Tsetup)
4) The Cells given in the netlist can be checked in the .lib files for their properties.
Source Code :
Test Bench :
`timescale 1ns/1ps //Creating Time Scale as in Source Code
module counter_test; //Defining Module Name without Port List
reg clk, rst,m; //Defining I/P as Registers [to Hold Values]
wire [31:0] count; //Defining O/P as Wires [To Probe Waveforms]
initial
begin
clk=0; //Initializing Clock and Reset
rst=0;#25; //All O/P is 4’b0000 from t=0 to t=25ns.
rst=1; //Up-Down counting is allowed at posedge clk
end
20
initial
begin
m=1; //Condition for Up-Count
#600 m=0; //Condition for Down-Count
rst=0;#25;
rst=1;
#500 m=0;
end
counter counter1(clk,m,rst, count); //Instantiation of Source Code
always #5 clk=~clk; //Inverting Clk every 5ns
initial
#1400 $finish; //Finishing Simulation at t=1400ns
endmodule
Waveform :
The procedure for Simulation and Synthesis remains same as mentioned earlier.
21
Lab 2: 4-Bit Adder
Aim: To write a verilog code for 4bit adder and verify the functionality using Test bench.
• Synthesize, Analyse Reports and Netlist, Critical Path and Max Operating Frequency.
• From the report generated find the total number of cells, power requirement and total area
requirement.
Tool Required:
Functional Simulation: Incisive Simulator (ncvlog, ncelab, ncsim)
Synthesis: Genus
22
Creating a Work space :
Create a new sub-Directory for the Design and open a terminal from the Sub-Directory.
module test_4_bit;
reg [3:0] A;
reg [3:0] B;
reg C0;
wire [3:0] S;
wire C4;
four_bit_adder dut(A,B,C0,S,C4);
initial begin
A = 4'b0011;B=4'b0011;C0 = 1'b0; #10;
A = 4'b1011;B=4'b0111;C0 = 1'b1; #10;
A = 4'b1111;B=4'b1111;C0 = 1'b1; #10;
end
initial
#50 $finish;
endmodule
23
Waveform :
24
Step 3 : Performing Synthesis
The Liberty files are present in the below path,
/home/install/FOUNDRY/digital/<Technology_Node_number>nm/dig/lib/
The Available technology nodes are 180nm ,90nm and 45nm.
In the terminal, initialise the tools with the following commands if a new terminal is being
used.
◦ csh
◦ source /home/install/cshrc
The tool used for Synthesis is “Genus”. Hence, type “genus -gui” to open the tool.
The Following are commands to proceed,
1. read_libs /home/install/FOUNDRY/digital/90nm/dig/lib/slow.lib
2. read_hdl {4bi_adder.v} //Reading multiple Verilog Files
3. elaborate
4. set_top_module four_bit_adder //Differentiating Top & Sub Module
5. set_dont_use *XL //Dont Use Cells with High Driving Strength
6. set_db syn_generic_effort medium //Setting effort medium
7. set_db syn_map_effort medium
8. set_db syn_opt_effort medium
9. syn_generic
10. syn_map
11. syn_opt
//Performing Synthesis Mapping and Optimisation
12. report_timing -unconstrained > adder_timing.rep
//Generates Timing report for worst datapath and dumps into file
//-unconstrained is to be given as no timing constraints are given
13. report_area > adder_area.rep
//Generates Synthesis Area report and dumps into a file
14. report_power > adder_power.rep
//Generates Power Report [Pre-Layout]
15. write_hdl > adder_netlist.v //Creates readable Netlist File
16. write_sdc > adder_sdc.sdc //Creates Block Level SDC
17. report_qor > adder_qor.rpt // Critical slack path
Commands 1-11 are intended for Synthesis process while 12-17 for Generating reports and Outputs.
Note 1:-
1. The Cells given in the netlist can be checked in the .lib files for their properties.
2. The Max Operating Frequency does not apply for Purely Combinational Circuit.
25
Synthesis RTL Schematic :
Note 2:-
1. You can tabulate Area, Power and Timing Constraints using any of the SDC Constraints as
instructed.
2. Make sure, during synthesis the Report File Names are changed so that the latest reports do
not overwrite the earlier ones.
26
Lab 3: UART
Aim: Write a verilog code for UART and carry out the following:
• To Verify the Functionality using test Bench
• Synthesize Design using constraints
• Tabulate Reports using various Constraints
• Identify Critical Path and calculate Max Operating Frequency
Tool Required:
Functional Simulation: Incisive Simulator (ncvlog, ncelab, ncsim)
Synthesis: Genus
Creating a Workspace :
Create a new sub-Directory for the Design and open a terminal from the Sub-Directory.
27
a) Functional Verification using Test Bench
Source Code – Transmitter :
module UART_TX
#(parameter CLKS_PER_BIT = 217)
(
input i_Clock,
input i_TX_DV,
input [7:0] i_TX_Byte,
output o_TX_Active,
output reg o_TX_Serial,
output o_TX_Done
);
case (r_SM_Main)
IDLE :
begin
o_TX_Serial <= 1'b1; // Drive Line High for Idle
r_TX_Done <= 1'b0;
r_Clock_Count <= 0;
r_Bit_Index <= 0;
28
if (i_TX_DV == 1'b1)
begin
r_TX_Active <= 1'b1;
r_TX_Data <= i_TX_Byte;
r_SM_Main <= TX_START_BIT;
end
else
r_SM_Main <= IDLE;
end // case: IDLE
29
if (r_Bit_Index < 7)
begin
r_Bit_Index <= r_Bit_Index + 1;
r_SM_Main <= TX_DATA_BITS;
end
else
begin
r_Bit_Index <= 0;
r_SM_Main <= TX_STOP_BIT;
end
end
end // case: TX_DATA_BITS
module UART_RX
#(parameter CLKS_PER_BIT = 217)
(
input i_Clock,
input i_RX_Serial,
output o_RX_DV,
output [7:0] o_RX_Byte
);
case (r_SM_Main)
IDLE :
begin
r_RX_DV <= 1'b0;
r_Clock_Count <= 0;
r_Bit_Index <= 0;
31
if (i_RX_Serial == 1'b0) // Start bit detected
r_SM_Main <= RX_START_BIT;
else
r_SM_Main <= IDLE;
end
32
else
begin
r_Bit_Index <= 0;
r_SM_Main <= RX_STOP_BIT;
end
end
end // case: RX_DATA_BITS
default :
r_SM_Main <= IDLE;
endcase
end
33
Test bench :
// This testbench will exercise the UART RX.
// It sends out byte 0x37, and ensures the RX receives it correctly.
`timescale 1ns/10ps
`include "uart_tx.v"
`include "uart_rx.v"
reg r_Clock = 0;
reg r_TX_DV = 0;
wire w_TX_Active, w_UART_Line;
wire w_TX_Serial;
reg [7:0] r_TX_Byte = 0;
wire [7:0] w_RX_Byte;
Waveform :
Note :-
1. You can tabulate Area, Power and Timing Constraints using any of the SDC Constraints as
instructed.
2. Make sure, during synthesis the Report File Names are changed so that the latest reports do
not overwrite the earlier ones.
36
Lab 4: 32-Bit ALU
Aim: Write a verilog code for 32 bit ALU supporting four logical and four arithmetic operations,
use case statement and if statement for ALU behavioral modeling.
• To Verify the Functionality using Test Bench
• Synthesize and compare the results using if and case statements
• Identify Critical Path and constraints
Tool Required:
Functional Simulation: Incisive Simulator (ncvlog, ncelab, ncsim)
Synthesis: Genus
The ALU will take in two 32-bit values, and control line. An Arithmetic unit does the
following task like addition subtraction, multi-fiction and logical operations. As the input is given in
32 bit we get 32 bit output. The arithmetic will show only one output at a time so a selector is
necessary to select one of the operator.
37
a) To Verify the Functionality using Test Bench
module alu_32bit_case(y,a,b,f);
input [31:0]a;
input [31:0]b;
input [2:0]f;
output reg [31:0]y;
always@(*)
begin
case(f)
3'b000:y=a&b; //AND Operation
3'b001:y=a|b; //OR Operation
3'b010:y=~(a&b); //NAND Operation
3'b011:y=~(a|b); //NOR Operation
3'b010:y=a+b; //Addition
3'b011:y=a-b; //Subtraction
3'b100:y=a*b; //Multiply
default:y=32'bx;
endcase
end
endmodule
Test Bench :
module alu_32bit_tb_case;
reg [31:0]a;
reg [31:0]b;
reg [2:0]f;
wire [31:0]y;
alu_32bit_case test2(.y(y),.a(a),.b(b),.f(f));
initial
begin
a=32'h00000000;
b=32'hFFFFFFFF;
#10 f=3'b000;
#10 f=3'b001;
#10 f=3'b010;
#10 f=3'b100;
end
initial
#50 $finish;
endmodule
38
Source Code - Using If Statement :
module alu_32bit_if(y,a,b,f);
input [31:0]a;
input [31:0]b;
input [2:0]f;
output reg [31:0]y;
always@(*)
begin
if(f==3'b000)
y=a&b; //AND Operation
else if (f==3'b001)
y=a|b; //OR Operation
else if (f==3'b010)
y=a+b; //Addition
else if (f==3'b011)
y=a-b; //Subtraction
else if (f==3'b100)
y=a*b; //Multiply
else
y=32'bx;
end
endmodule
Test bench :
module alu_32bit_tb_if;
reg [31:0]a;
reg [31:0]b;
reg [2:0]f;
wire [31:0]y;
alu_32bit_if test(.y(y),.a(a),.b(b),.f(f));
initial
begin
a=32'h00000000;
b=32'hFFFFFFFF;
#10 f=3'b000;
#10 f=3'b001;
#10 f=3'b010;
#10 f=3'b100;
end
initial
#50 $finish;
endmodule
39
Wave Forms :
b) Synthesize Design
Run the synthesis Process one time for each code and make sure the output File names are
changed accordingly.
Synthesis Process :
1. read_libs /home/install/FOUNDRY/digital/90nm/dig/lib/slow.lib
2. read_hdl {alu_32bit_if.v (OR) alu_32bit_case.v} //Choose any one
3. elaborate
4. read_sdc constraints_top.sdc //Optional-Reading Top Level SDC
5. set_db syn_generic_effort medium //Setting effort medium
6. set_db syn_map_effort medium
7. set_db syn_opt_effort medium
8. syn_generic
9. syn_map
10. syn_opt
//Performing Synthesis Mapping and Optimisation
11. report_timing > alu_timing.rep
//Generates Timing report for worst datapath and dumps into file
12. report_area > alu_area.rep
//Generates Synthesis Area report and dumps into a file
13. report_power > uart_power.rep
//Generates Power Report [Pre-Layout]
14. write_hdl > uart_netlist.v
//Creates readable Netlist File
15. write_sdc > uart_sdc.sdc
//Creates Block Level SDC
40
Synthesis RTL Schematic :
Note :-
1. You can tabulate Area, Power and Timing Constraints using any of the SDC Constraints as
instructed.
2. Make sure, during synthesis the Report File Names are changed so that the latest reports do
not overwrite the earlier ones.
41
Lab 5: Latches and Flip Flops
Aim: Write a verilog code for Latch and Flip-flops (D, SR, JK), Synthesize the design and
compare the synthesis report.
Tool Required:
Functional Simulation: Incisive Simulator (ncvlog, ncelab, ncsim)
Synthesis: Genus
Latches and flip-flops are the basic elements for storing information. One latch or flip-flop
can store one bit of information. The main difference between latches and flip-flops is that for
latches, their outputs are constantly affected by their inputs as long as the enable signal is asserted.
In other words, when they are enabled, their content changes immediately when their inputs
change. Flip-flops, on the other hand, have their content change only either at the rising or falling
edge of the enable signal. This enable signal is usually the controlling clock signal. After the rising
or falling edge of the clock, the flip-flop content remains constant even if the input changes.
There are basically four main types of latches and flip-flops: SR, D, and JK. The major
differences in these flip-flop types are the number of inputs they have and how they change state.
For each type, there are also different variations that enhance their operations.
Example: D-Flip-flop
42
a) Verilog Codes for D-Flip Flop, JK-Flip Flop and SR-Flip Flop.
Source of JK Latch :
module jkff(J, K, en, Q);
input J, K, en;
output reg Q,Qm;
always @(en)
begin
if(J == 1 && K == 0)
Qm <= 1;
else if(J == 0 && K == 1)
Qm <= 0;
else if(J == 1 && K == 1)
Qm <= ~Qm;
end
endmodule
44
Wave Forms for D-Flip Flop:
Synthesis Commands :
1. read_libs /home/install_run/FOUNDRY/digital/90nm/dig/lib/slow.lib
2. read_hdl dff.v
3. elaborate
4. read_sdc constraints_top.sdc
5. set_db syn_generic_effort medium
6. set_db syn_map_effort medium
7. set_db syn_opt_effort medium
8. syn_generic
9. syn_map
10. syn_opt
11. report_timing > dff_timing.rep
12. report_area > dff_area.rep
13. report_power > dff_power.rep
14. write_hdl > dff_netlist.v
15. write_sdc > dff_sdc.sdc
45
Figure No5.4: SDC file for a D Latch
Note :-
1. You can tabulate Area, Power and Timing Constraints using any of the SDC Constraints as
instructed.
2. Make sure, during synthesis the Report File Names are changed so that the latest reports do
not overwrite the earlier ones.
46
Lab 6: Physical Design
Aim: For the synthesized netlist carry out the following any two above experiments:
• Floor planning, identify the placement of pads, placement and Routing
Tool Required:
Functional Simulation: Incisive Simulator (ncvlog, ncelab, ncsim)
Synthesis: Genus
Physical Design: Innovus
Make sure the Synthesis for the target design is done and open a terminal from the
corresponding workspace.
Initiate the Cadence tools and cmd :innovus (Press Enter)
For Innovus tool, a GUI opens and also the terminal enters into innovus command prompt
where in the tool commands can be entered.
Importing Design
To Import Design, all the Mandatory Inputs are to be loaded and this can be done either using script
files named with .globals and .view/.tcl or through GUI as shown below.
47
Note :
1. For Synthesis, slow.lib was read as input. Each liberty file contains a pre-defined Process,
Voltage and Temperature (PVT) values which impact the ease of charge movement.
2. Process, Voltage and Temperature individually affect the ease of currents as depicted below.
3. Hence, slow.lib contains PVT combination (corner) with slow charge movement =>
Maximum Delay => Worst Performance
4. Similarly, fast.lib contains PVT Combination applicable across its designs to give Fast
charge movement => Minimum Delay => Best Performance.
5. When these corners are collaborated with the sdc, they can be used to analyse timing for
setup in the worst case and hold in the best case.
6. All these analysis views are to be manually created either in the form of script or using the
GUI.
48
Figure No6.2: Script file of Default.view (or) Default.tcl file
Else, if you would like to import your design using GUI, open the Innovus tool and from the
GUI, go to File → Import Design.
A new pop-up window appears.
First load the netlist. You can browse for the file and select “Top cell : Auto Assign”.
49
Once both the Netlist and LEF Files are loaded, your import design window is as follows.
In order to load the Liberty File and SDC, create delay corners and analysis view, select the
“Create Analysis Configuration” option at the bottom.
50
An MMMC browser Pops Up.
Once all of them are added, Analysis Views are created and assigned to Setup and Hold.
In order to add any of the objects, make a right click on the corresponding label → Select New.
51
Similarly, add fast.lib with a label Fast or any identifier of your own.
Adding RC Corners can also be done in a similar process. The temperature value can be
found under the corresponding liberty file. Also, cap table and RC Tech files can be added
from Foundry where available.
52
Delay Corners are formed by combining Library Sets with RC Corners.
An example is shown below.
53
Similarly, SDC can be read in under the MMMC Object of “Constraints”.
54
Analysis Views are formed from combinations of SDC and Delay Corner.
Once “Best” and “Worst” Analysis views are created, assign them to Setup and Hold.
Once all the process is done, Click on “Save&Close” and save the script generated with any
name of your choice.
Make sure the file extension remains .view or .tcl
After saving the script, go back to Import Design window and Click “OK” to load your
design.
55
Add Power and Ground Net names (Identifiers) under Import design window.
56
A rectangular or square box appears in your GUI if and only if all the inputs are read
properly.
If the box does not appear, check for errors in your log (Either on terminal or log file from
pwd)
57
The internal area of the box is called “Core Area”.
The horizontal lines running along the width of Core are “Standard Cell Rows”. Every
alternate of them are marked indicating alternate VDD and VSS rows.
This setup is called “Flipped Standard Cell Rows”.
→ Floorplan
Select Floorplan → Specify Floorplan to modify/add concerned values to the above Factors.
On adding/modifying the concerned values, the core area is also modified.
58
The Yellow patch on the Left Bottom are the group of “Unassigned pins” which are to be
placed along the IO Boundary along with the Standard Cells [Gates].
→ Power Planning
Under Connect Global Net Connects, we create two pins, one for VDD and one for VSS connecting
them to corresponding Global Nets as mentioned in Globals file / Power and Ground Nets.
1. Select Power → Connect Global Nets.. to create “Pin” and “Connect to Global Net” as
shown and use “Add to list”.
2. Click on “Apply” to direct the tool in enforcing the Pins and Net connects to Design and
then Close the window.
59
In order to Tap in Power from a distant Power supply, Wider Nets and Parallel connections
improve efficiency. Moreover, the cells that would be placed inside the core area are
expected to have shorter Nets for lower resistance.
Hence Power Rings [Around Core Boundary] and Power Stripes [Across Core Boundary]
are added which satisfies the above conditions.
Select Power → Power Planning → Add Rings to add Power rings ‘around Core Boundary’.
60
Select the Nets from Browse option OR Directly type in the Global Net Names separated by
a space being Case and Spelling Sensitive.
Select the Highest Metals marked ‘H’ [Horizontal] for Top and Bottom and Metals marked
‘V’ [Vertical] for Right and Bottom. This is because Highest metals have Highest Widths
and thus Lowest Resistance.
Click on Update after the selection and “Set Offset : Centre in Channel” in order to get the
Minimum Width and Minimum Spacing of the corresponding Metals and then Click “OK”.
Similarly, Power Stripes are added using similar content to that of Power Rings.
61
On adding Power Stripes, The Power mesh setup is complete as shown. However, There are
no Vias that could connect Metal 9 or Metal 8 directly with Metal 1 [VDD or VSS of
Standard Cells are generally made up of Metal 1].
The connection between the Highest and Lowest Metals is done through Stacking of Vias
done using “Special Route”.
To perform Special Route, Select Route → Special Route → Add Nets → OK.
After the Special Route is complete, all the Standard Cell Rows turn to the Color coded for
Metal 1 as shown below.
The complete Power Planning process makes sure Every Standard Cell receives enough power to
operate smoothly.
→ Pre – Placement :
After Power Planning, a few Physical Cells are added namely, End Caps and Well Taps.
End Caps : They are Physical Cells which are added to the Left and Right Core Boundaries
acting as blockages to avoid Standard Cells from moving out of boundary.
Well Taps : They act like Shunt Resistance to avoid Latch Up effects.
62
To add End Caps, Select Place → Physical Cell → Add End Caps and “Select” the FILL’s from the
available list.
Higher Fills have Higher Widths. As shown Below, The End Caps are added below your
Power Mesh.
To add Well Taps, Select Place → Physical Cell → Add Well Tap → Select →FillX [X →
Strength of Fill = 1,2,4 etc] → Distance Interval [Could be given in range of 30-45u] → OK
63
→ Placement
1. The Placement stage deals with Placing of Standard Cells as well as Pins.
2. Select Place → Place Standard Cell → Run Full Placement → Mode → Enable ‘Place I/O
Pins’ → OK → OK .
64
All the Standard Cells and Pins are placed as per the communication between them, i.e.,
Two communicating Cells are placed as close as possible so that shorter Net lengths can be
used for connections as Shorter Net Lengths enable Better Timing Results.
You can toggle the Layer Visibility from the list on the Right. The List of Layers available
are shown on the right under “Layer” tab with colour coding.
65
→ Report Generation and Optimization :
1. Timing Report :
1. To generate Timing Report, Timing → Report Timing → Design Stage – PreCTS
2. Analysis Type – Setup → OK
3. The Timing report Summary can be seen on the Terminal.
2. Area Report :
1. cmd : report_area
3. Power Report :
1. cmd : report_power
66
In case of any Violating paths, the design could be optimized in the following way.
To optimize the Design, Select ECO → Optimize Design → Design Stage [PreCTS] →
Optimization Type – Setup → OK
After you run the optimization, the terminal displays the latest Timing report and updated
area and power reports can be checked.
This step Optimizes your design in terms of Timing, Area and Power. You can Generate
Timing, Area, Power in similar way as above report Post – Optimization to compare the
Reports.
The CTS Stage is meant to build a Clock Distribution Network such that every Register
(Flip Flop) acquires Clock at the same time (Atleast Approximately) to keep them in proper
communication.
A Script can be used to Build the Clock Tree as follows :
67
Source the Script as shown in the above snapshot through the Terminal and then Select
Clock → CCOpt Clock Tree Debugger → OK to build and view clock tree.
The Red Boxes are the Clock Pins of various Flip Flops in the Design while Yellow
Pentagon on the top represents Clock Source.
The Clock Tree is built with Clock Buffers and Clock Inverters added to boost up the Clock
Signal.
68
Report Generation and Design Optimization :
CTS Stage adds real clock into the Design and hence “Hold” Analysis also becomes
prominent. Hence, Optimizations can be done for both Setup & Hold, Timing Reports are to
be Generated for Setup and Hold Individually.
69
Routing :
1. All the net connections shown in the GUI till CTS are only based on the Logical
connectivity.
2. These connections are to be replaced with real Metals avoiding Opens, Shorts, Signal
Integrity [Cross Talks], Antenna Violations etc.
3. To run Routing, Select Route → Nano Route → Route and enable Timing Driven and SI
Driven for Design Physical Efficiency and Reliability.
70
71
Area and Power Reports :
Use the commands report_area and report_power for Area and Power Reports respectively.
72
As an alternate to the setAnalysisMode command, you can use the GUI at Tools → Set
Mode → Set Analysis Mode → Select On-Chip-Variation and CPPR.
73
It is recommended to save Netlist and Design at every stage.
74
Physical Verification – Capturing DRC and LVS:
After saving the routed Database, you can proceed for Physical Verification and capture the
DRC and LVS reports.
Inputs Required – DRC :
◦ Technology Library and Rule Set
◦ GDS format giles of all Standard Cells (Given by Cadence at /home/install/FOUNDRY/
90nm/dig/gds for 90nm Tech node)
Outputs – DRC :
◦ DRC Violation Report
◦ Physical Netlist (Optional)
From the Innovus GUI, select PVS → Run DRC to open the “DRC Submission Form”.
75
The DRC Run Submission Form begins with mentioning the Run Directory. The Run Directory is
the location where all the logs, reports and other files concerned with PVS are saved.
76
The Technology Library is specific for PVS Tool and technology node on which the design
is created.
On reading the tech lib, the rule set is loaded and the corresponding fabrication rules are
read in to be checked against the design.
The GDS format files of all standard cells available with the corresponding technology node
are also provided by the vendor. Select all of them to add.
77
The output report can be named and saved as shown.
Hit “Submit” to run the DRC and the following windows appear.
78
All the list of DRC Errors can be seen in the above window of which the location of the
DRC Violation occuring can be highlighted dealing one to one.
79
For example, in the above shown snapshot, the errors associated
with N-Implant can be seen. (Select a error occurrence and click on the right arrow below to
highlight/zoom in the location.)
You can save the DRC Run as a “Preset” file to rerun the DRC if required at a later point of
time.
Saving/loading the Preset File is shown below.
80
Note : A Physical Netlist can be saved after the DRC Run as shown below.
81
From the Innovus GUI, Select PVS → Run LVS to open the LVS run submission form.
Provide the Run directory and log file name (Along with path – Optional)
Load the Tech Lib, GDS Files and Spice Netlist of all Standard Cells under the
corresponding technology node.
82
83
On successful completion of LVS Run, the following windows appear.
84
85
86
You can create a GDS file along with Stream out file either using the GUI as File → Save →
GDS/Oasis or use the following command.
Cmd : streamOut <GDSFileName>.gds -streamOut <streamOut>.map or
innovus 1> streamOut design_GDS.gds -mapFile streamOut2.map -libName Mydesign -
merge {/home/install/FOUNDRY/digital/90nm/dig/gds/*.gds} -units 2000 -mode ALL
87