Download - Synthesis Tutorial v 1.3
-
8/12/2019 Synthesis Tutorial v 1.3
1/20
Logic synthesis and Place and Route Tutorial Page 1
IC Design and Test Portland State January 2011
Laboratory University
Content:
I. Generation of a Verilog Netlist using NC-Verilog3II. Logic Synthesis and Place n Route Tutorial ...8
III. Back Annotation of Design in Cadence Virtuoso10
IV. Simulating an PEX extracted netlist18
V. Direct Place and Route Design..21
Version Control:
1. Created on Jan 28, 2011 by Vivek Bakshi
2. Added Section V on Feb 12, 2011 by Vivek Bakshi
3. Updated Section V. Added Contents and Version Control on Feb 25, 2011 by Vivek Bakshi
4. Added Setup section. Jan 31, 2012 by Vivek Bakshi
-
8/12/2019 Synthesis Tutorial v 1.3
2/20
Logic synthesis and Place and Route Tutorial Page 2
IC Design and Test Portland State January 2011
Laboratory University
Standard Cell ASIC Design flow: A designer uses predesigned logic cells such as AND gate, NOR gate, etc.
These gates are called Standard Cells. The advantage of Standard Cell ASICs is that the designers save
time, money and reduce the risk by using a predesigned and pre-tested Standard Cell Library. We will be
using Cadence RTL compiler to synthesize our design. Logic synthesis is a process by which an abstract
form of desired circuit behavior, typically register transfer level (RTL), is turned into a design
implementation in terms of logic gates. Common examples of this process include synthesis of HDLs,
including VHDL and Verilog. Logic synthesis is one aspect of electronic design automation. After logic
synthesis, in a typical ASIC design, a Place and Route tool is used to place the standard cells and then
route the nets between them and produce an optimized design. We will be using Cadence Soc
Encounter to place and route our design. This tutorial will help you to learn a typical ASIC design flow.
We will be using the following flow in our Labs.
Build the Schematic
of Design usingVirtuoso
Generate a HDL
netlist
Logic Synthesis
Place and Route
Simulate for
rise and fall
times andPropagation
delays
Import the Placed n
Routed Design in
Virtuoso
Run DRC and LVS
Extract the design for
parasitics and
generate a netlist
Simulate for
rise and fall
times and
Propagation
delays
-
8/12/2019 Synthesis Tutorial v 1.3
3/20
Logic synthesis and Place and Route Tutorial Page 3
IC Design and Test Portland State January 2011
Laboratory University
Setup
The setup files have to be copied from following directory
On the terminal, do
> cp /u/vbakshi/public/setup.tar.gz ./
When you will untar the file, you will see a folder cadencesetup/ containing two folders:
1. cadence610-- It contains all the setup file for invoking ICFB. It also contains the Ocean Script
"spectre.ocn" and "addlabel.il" scripts.
2. Encounter-- It contains the setup file for the PnR flow. Open a separate terminal when you source the
setup files for this flow. It contains the flow directory in which you will save your verilog HDL inputs. It
also contains the perl script PR.pl which will run your whole flow.
For ICFB open one terminal and when you start the PnR flow, make sure to open another terminal for
that.
Starting icfb:
Go in the cadencesetup/cadence610. On the terminal window, write:
> source setup_all.bash
If you want to have your previous designs of x25 and x26 again, you can edit the cds.lib to add the pathof your previous designs.
Open icfb. Draw the schematic.
-
8/12/2019 Synthesis Tutorial v 1.3
4/20
Logic synthesis and Place and Route Tutorial Page 4
IC Design and Test Portland State January 2011
Laboratory University
I. Generation of a Verilog Netlist using NC-Verilog
1. After the schematic is built, go to LaunchSimulationNC-Verilog
Fig 1.
-
8/12/2019 Synthesis Tutorial v 1.3
5/20
Logic synthesis and Place and Route Tutorial Page 5
IC Design and Test Portland State January 2011
Laboratory University
2. A window will pop up.
Fig 2.
3. Go to CommandsInitialize Design.
4. After Initializing the design, Go to SetupNetlist. A window will appear.
On the Netlisting Mode, click Entire design. Click Netlist Explicitly In the Global Power Nets change the value to vdd In the Global Ground Nets change the value to gnd
5. The form window should look like
-
8/12/2019 Synthesis Tutorial v 1.3
6/20
Logic synthesis and Place and Route Tutorial Page 6
IC Design and Test Portland State January 2011
Laboratory University
Fig 3.
6. Click OK.
7. Go to CommandsGenerate Netlist
8. The status should be Netlist Succeeded.
9. Go to ResultsNetlist. A GUI-form will open up.
Fig. 4
-
8/12/2019 Synthesis Tutorial v 1.3
7/20
Logic synthesis and Place and Route Tutorial Page 7
IC Design and Test Portland State January 2011
Laboratory University
10. Click on the library name which has your design. Click on any Cell nameand click View.You will see
the verilog netlist of the design you made and also the netlist of instances that were used in your design.
So for example, If the top level design is a 4 bit adder, it will show you the netlist of a 4 bit adder with
four 1 bit full adders instantiated. Then there will be another netlist of a 1 bit full adder containing the
XOR, AND and OR cells instantiated.
11. When you open the netlist. Go to FileSave as. Save all the netlist files in directory where you will
be invoking the PnR tool. This will be cadencesetup/Encounter/ directory. The file name should be same
as the module name. This is very important.
12. In the netlist containing the top-level design module, copy the contents of all the low level design
modules. So for example if the top-level HDL is 4 bit adder, copy the whole HDL definition of module
1bit adder in the top level HDL file.
13. Make sure you edit the file to remove all the specify and endspecify staments manually.
An example file will look like
module add_4bit ( Cout, Sbus0, Sbus1, Sbus2, Sbus3, Abus0, Abus1, Abus2, Abus3, Bbus0, Bbus1, Bbus2, Bbus3, Cin, gnd, vdd );
output Cout, Sbus0, Sbus1, Sbus2, Sbus3;
input Abus0, Abus1, Abus2, Abus3, Bbus0, Bbus1, Bbus2, Bbus3, Cin, gnd, vdd;
adder I3 ( .cout(Cout), .sum(Sbus3), .a(Abus3), .b(Bbus3), .c(net24), .gnd(gnd), .vdd(vdd));
adder I2 ( .cout(net24), .sum(Sbus2), .a(Abus2), .b(Bbus2),.c(net32), .gnd(gnd), .vdd(vdd));
adder I1 ( .cout(net32), .sum(Sbus1), .a(Abus1), .b(Bbus1),.c(net40), .gnd(gnd), .vdd(vdd));
adder I0 ( .cout(net40), .sum(Sbus0), .a(Abus0), .b(Bbus0),.c(Cin), .gnd(gnd), .vdd(vdd));
endmodule
module adder ( Cout, Sum, gnd, vdd, A, B, Cin );
output Cout, Sum;
input A, B, Cin, gnd, vdd;
XOR2X1 I4 ( .A(A), .B(B), .Y(net22), .gnd(gnd), .vdd(vdd));
XOR2X1 I5 ( .A(net22), .B(Cin), .Y(Sum), .gnd(gnd), .vdd(vdd));
AND2X1 I3 ( .A(A), .B(B), .Y(net27), .gnd(gnd), .vdd(vdd));
AND2X1 I2 ( .A(net22), .B(Cin), .Y(net32), .gnd(gnd), .vdd(vdd));
OR2X1 I6 ( .A(net32), .B(net27), .Y(Cout), .gnd(gnd), .vdd(vdd));
endmodule
-
8/12/2019 Synthesis Tutorial v 1.3
8/20
Logic synthesis and Place and Route Tutorial Page 8
IC Design and Test Portland State January 2011
Laboratory University
II. Logic Synthesis and Place n Route TutorialThis part is totally automated by a perl script PR.pl. The script removes gnd and vdd definitions from
your HDL input and gives it to synthesis tool. The RTL compiler takes logic gates from its own library
gscl45nm.v and builds your circuit and then optimizes it. Then the Encounter tool places the standard
cells between rows and routes the nets to produce an ASIC design.
1. Go to the directory where you have saved the HDL file and all the encounter files should be present.
Open a separate terminal window and write on terminal:
> source setup_all.bash
2. In the command line,type
perl PR.pl Your_HDL_file_name.v
Again make sure the HDL file name is same as top level module name.
3. The script runs the cadence RTL compiler, synthesizes the design in logic gates and outputs a file
Your_HDL_file_name.vh
4. It will also output following files
i) rc.log --- This is the log file of the synthesis tool. The file shouldnt have any errors or any
unexpected warnings. If there is an error, the whole flow will exit with an error.
A successful synthesis run should look like
Incremental optimization status
===============================Worst DRC Total
Total Neg Max
Operation Area Slack Cap Worst Path
-------------------------------------------------------------------------------
init_delay 92 -140 11 Bbus0 --> Sbus3
init_drc 92 -140 11 Bbus0 --> Sbus3
init_area 92 -140 11 Bbus0 --> Sbus3
Done mapping add_sub4bit
Synthesis succeeded.
rc:/> rc:/> Tracing clock networks.
Levelizing the circuit.
Applying wireload models.
Computing net loads.
Computing delays.
Computing arrivals and requireds.
rc:/> rc:/> rc:/> rc:/> rc:/> rc:/> rc:/>
rc:/> Synthesis Finished!
rc:/> Check timing.rep, area.rep, gate.rep and power.rep for synthesis results
-
8/12/2019 Synthesis Tutorial v 1.3
9/20
Logic synthesis and Place and Route Tutorial Page 9
IC Design and Test Portland State January 2011
Laboratory University
ii) rc.cmd ---- this is the cmd file which is generated by RTL compiler. It contains all the internal
commands which are run in a typical logic synthesis flow.
iii) Files with extension .rep are generated which contain the timing and power information of the
design.
5. The output .vh file is given as input to Soc Encounter by the script itself and it starts running in
background.
6. The Encounter runs an encounter.tcl file. If you are interested you can open the file and see the
internal commands.
7. The Encounter flow should also run without any errors.
Open the encounter.log. The end of the file should look like this
verifyGeometry
*** Starting Verify Geometry (MEM: 580.5) ***
VERIFY GEOMETRY ...... Starting Verification
VERIFY GEOMETRY ...... Initializing
VERIFY GEOMETRY ...... Deleting Existing Violations
VERIFY GEOMETRY ...... Creating Sub-Areas
...... bin size: 2080
VERIFY GEOMETRY ...... SubArea : 1 of 1
VERIFY GEOMETRY ...... Cells : 0 Viols.
VERIFY GEOMETRY ...... SameNet : 0 Viols.
VERIFY GEOMETRY ...... Wiring : 0 Viols.
VERIFY GEOMETRY ...... Antenna : 0 Viols.
VERIFY GEOMETRY ...... Sub-Area : 1 complete 0 Viols. 0 Wrngs.
VG: elapsed time: 2.00
Begin Summary ...Cells : 0
SameNet : 0
Wiring : 0
Antenna : 0
Short : 0
Overlap : 0
End Summary
Verification Complete : 0 Viols. 0 Wrngs.
**********End: VERIFY GEOMETRY**********
*** verify geometry (CPU: 0:00:01.2 MEM: 78.7M)
verifyConnectivity -type all
******** Start: VERIFY CONNECTIVITY ********
Start Time: Thu Jan 27 04:26:32 2011
Design Name: add_sub4bit
Database Units: 2000
Design Boundary: (0.0000, 0.0000) (54.6275, 50.0200)
Error Limit = 1000; Warning Limit = 50
Check all nets
VC Elapsed Time: 0:00:00.0
Begin Summary
Found no problems or warnings.
End Summary
******** End: VERIFY CONNECTIVITY ********
Verification Complete : 0 Viols. 0 Wrngs.
-
8/12/2019 Synthesis Tutorial v 1.3
10/20
Logic synthesis and Place and Route Tutorial Page 10
IC Design and Test Portland State January 2011
Laboratory University
8. The Design Window should look like
Fig 5.
9. Go to the FileSaveDEFOK. The DEF file will be saved with your design name and will be your
final design output.
-
8/12/2019 Synthesis Tutorial v 1.3
11/20
Logic synthesis and Place and Route Tutorial Page 11
IC Design and Test Portland State January 2011
Laboratory University
10. You can close the Encounter Window now. A HDL file final.v is also saved in the current directory.
This file is the HDL version of your design. We will use this file later for our LVS check.
III. Back Annotation of Design in Cadence Virtuoso
1. Open the ICFB window. Go to File ImportDEF. A form will open up.
Give the path to your DEF file Give the Target Library Name Ref. Technology Librariesshould be NCSU_TechLib_FreePDK45 From the Drop-Down Menu of Technology From Library Select the NCSU_Techlib_FreePDK45.
If you are not able to select anything from drop-down menu, click Use Template fileand the
again click Use GUI Fields
Give the Target Cell Name Give theTarget View Name as layout Give the Master Library List as freepdk45_cells
2. Click OK.
Fig 6.
-
8/12/2019 Synthesis Tutorial v 1.3
12/20
Logic synthesis and Place and Route Tutorial Page 12
IC Design and Test Portland State January 2011
Laboratory University
3. In the ICFB window you will see the DEF import. The DEF import will complete with some errors as
shown below. This error ROW_CORE_ROW are generated due to Place and Route boundaries. You
shouldnt worry about them. However, if you are seeing some other type of error, then probably the
DEF import wasnt correct.
4. Go to the Library Manager and you will be able to see the layout of your design.
5. You will notice all the Boundaries. On the keyboard press ctrl + A. The design will get selected. Move
the Design from these boundaries and you will be able to see a design like Fig 7 below.
ERROR: (OALEFDEF-50096): /u/vbakshi/Desktop/cadencesetup/Encounter/flow/add_sub4bit.def(24) : ROW CORE_ROW_0: The
siteDef CoreSite was not found. This row was ignored. Ensure that the site is defined in the technology database.
********************************************************************************
Product : Virtuoso(R) DEF In
Program : @(#)$CDS: defin.exe version 6.1.0 10/10/2006 14:51 (cds23100) $
SubVersion: sub-version IC6.1.0.243
Started at: 28-Jan-2011 01:56:59
User Name : vbakshi
Host Name : nemo.ece.pdx.edu
Directory : /u/vbakshi/Desktop/cadencesetup/cadence610
DB Version: 20060924 (SJ)
CADENCE Design Systems, Inc.
********************************************************************************ERROR: (OALEFDEF-50096): /u/vbakshi/Desktop/cadencesetup/Encounter/flow/add_sub4bit.def(26) : ROW CORE_ROW_1: The
siteDef CoreSite was not found. This row was ignored. Ensure that the site is defined in the technology database.
ERROR: (OALEFDEF-50096): /u/vbakshi/Desktop/cadencesetup/Encounter/flow/add_sub4bit.def(28) : ROW CORE_ROW_2: The
siteDef CoreSite was not found. This row was ignored. Ensure that the site is defined in the technology database.
ERROR: (OALEFDEF-50096): /u/vbakshi/Desktop/cadencesetup/Encounter/flow/add_sub4bit.def(30) : ROW CORE_ROW_3: The
siteDef CoreSite was not found. This row was ignored. Ensure that the site is defined in the technology database.
Elapsed Time: 5.3s
defin translation completed (errors: 4, warnings: 0)
-
8/12/2019 Synthesis Tutorial v 1.3
13/20
Logic synthesis and Place and Route Tutorial Page 13
IC Design and Test Portland State January 2011
Laboratory University
Fig 7.
6. Press shift + S. Click Add criteria and fill in the forms as shown below.
-
8/12/2019 Synthesis Tutorial v 1.3
14/20
Logic synthesis and Place and Route Tutorial Page 14
IC Design and Test Portland State January 2011
Laboratory University
7. After you have filled the form, click Applyand then Select All.
8. Press Q. This will open up the property form. Click attributeand then Common.
Change the View as layout. Click OK.
Fig 7.
9. Now you have to put the labels on all the input and output pins. The labels are added to layout
explicitly as LVS cannot detect pins. So during layout extraction it converts the labels to pins. In the
directory, there is a script called addlabel.il. In the icfb window, load the script:
load addlabel.il
The script will automatically put labels on each of the pin.
-
8/12/2019 Synthesis Tutorial v 1.3
15/20
Logic synthesis and Place and Route Tutorial Page 15
IC Design and Test Portland State January 2011
Laboratory University
10. DRC and LVS are not required as the rule checks are done in encounter itself.
11. Go to CalibreRun Pex. A form will open up. Again go to Inputs Tab. Go to Netlist Tab. Again select
the verilog file final.v and format as VERILOG.
12. Go to Output tab. Change the extraction to Transistor level, Extraction type as R + C and No
Inductance. It should look like the Fig 10.
13. Choose the format as SPECTRE and use names from Layout. Refer to Fig 10.
14. Click Run pex.
Fig 10.
15. After some time, the PEX will complete with no errors. It will also show you the netlist. Make sure all
the input and output pins are declared including vdd and gnd.
-
8/12/2019 Synthesis Tutorial v 1.3
16/20
Logic synthesis and Place and Route Tutorial Page 16
IC Design and Test Portland State January 2011
Laboratory University
16. The PEX outputs three files as the extracted netlist. These are:
{design name}.netlist
{design name}.pex
{design name}.pxi
The starting part of .netlist should look like below. Make sure all the input and output pins are
showing in the netlist. This netlist contains all the extracted transistors, resistance and capacitances.
// File: add_sub4bit.pex.netlist
// Created: Fri Jan 28 04:06:36 2011
// Program "Calibre xRC"
// Version "v2007.1_24.22"
//
include "add_sub4bit.pex.netlist.pex"
subckt ADD_SUB4BIT ( C4 SBUS0 SBUS1 SBUS2 SBUS3 ABUS0 ABUS1 ABUS2 ABUS3 BBUS0 \
BBUS1 BBUS2 BBUS3 CIN INST VDD GND )
//
// SBUS0 SBUS0
// SBUS3 SBUS3
// ABUS0 ABUS0
// ABUS1 ABUS1
// BBUS0 BBUS0
// BBUS1 BBUS1
// ABUS2 ABUS2
// ABUS3 ABUS3
// BBUS2 BBUS2
// BBUS3 BBUS3// C4 C4
// CIN CIN
// SBUS1 SBUS1
// SBUS2 SBUS2
// GND GND
// VDD VDD
-
8/12/2019 Synthesis Tutorial v 1.3
17/20
Logic synthesis and Place and Route Tutorial Page 17
IC Design and Test Portland State January 2011
Laboratory University
IV. Simulating an PEX extracted netlist
Couple of hacks to done before we are ready for simulating our extracted netlist.
1. On the command line,
> mkdir spectre.run1/
2. Copy your all three extracted netlist files in this directory.
3. Rename the .netlist file as netlist. On the command line write
> mv *.netlist netlist
4. In the spectre.run1/ directory type on the command line
> cp ./netlist ./input.scs
This input.scs file will be input to your ocean script. Open input.scs in gedit. This will be your new
input.scs
When you simulated your schematic, a directory called simulation is formed in the current running
directory. The directory contains an input.scs file.
An example of the path will be like:
/u/username/Desktop/cadence610/simulation/add_sub4bit_test/spectre/schematic/netlist
Go to this directory and open the input.scs file in gedit. Remember this is your old input.scs file in which
you simulated your schematic. Now you have two input.scs file open, one is the old version (the one
which simulated your schematic) and another will be your new version.
Do not get confused by two input.scs files
In Old input.scs, you will see the starting lines something like below:
simulator lang=spectreglobal 0
include "/u/vbakshi/Desktop/cadencesetup/cadence610/50nmodels.m"
// Library name: freepdk45_cells
// Cell name: XOR2X1
// View name: schematic
//
-
8/12/2019 Synthesis Tutorial v 1.3
18/20
Logic synthesis and Place and Route Tutorial Page 18
IC Design and Test Portland State January 2011
Laboratory University
5. Copy these first three lines at the top of your new input.scs file.
6. Again at the end of your old input.scs file after the End of subcircuit Definition, you will notice all
instantiation of your circuit, voltage sources and ground definitions will be there. An example will be
7. Copy all the lines after End of subcircuit Definition in your new input.scs file.
8. Close the old input.scs file
9. In your new input.scs file, notice that the subcircuit has been instantiated like
subckt ADD_SUB4BIT ( C4 SBUS0 SBUS1 SBUS2 SBUS3 ABUS0 ABUS1 ABUS2 ABUS3 BBUS0 \
BBUS1 BBUS2 BBUS3 CIN INST VDD GND )
Then at end of subcircuit definitions, you will notice the instantiation of your subcircuit
I0 (net29 net29 net27 net27 net25 net25 net23 net23 C4 0 0 Sbus0 Sbus1 \
Sbus2 Sbus3 0 net31) add_sub4bit
// End of subcircuit definition.
// Library name: lab_test2
// Cell name: add_sub4bit_test
// View name: schematic
I0 (net29 net29 net27 net27 net25 net25 net23 net23 C4 0 0 Sbus0 Sbus1 \
Sbus2 Sbus3 0 net31) add_sub4bit
V6 (net23 0) vsource type=pwl wave=[ 0 1.2 18n 1.2 18.2n 0 30n 0 30.2n 1.2 \
45n 1.2 ]
V5 (net25 0) vsource type=pwl wave=[ 0 0 12n 0 12.2n 1.2 25n 1.2 25.2n 0 \
35n 0 ]
V1 (net27 0) vsource type=pwl wave=[ 0 1.2 18n 1.2 18.2n 0 30n 0 30.2n 1.2 \
45n 1.2 ]
V0 (net29 0) vsource type=pwl wave=[ 0 0 12n 0 12.2n 1.2 25n 1.2 25.2n 0 \
35n 0 ]
V4 (net31 0) vsource type=dc dc=1.2
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \
checklimitdest=psf
tran tran stop=100n write="spectre.ic" writefinal="spectre.fc" \
annotate=status maxiters=5
finalTimeOP info what=oppoint where=rawfile
modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
primitives info what=primitives where=rawfile
subckts info what=subckts where=rawfile
saveOptions options save=allpub
-
8/12/2019 Synthesis Tutorial v 1.3
19/20
Logic synthesis and Place and Route Tutorial Page 19
IC Design and Test Portland State January 2011
Laboratory University
These nets should be in the same order as the subcircuit definition. You will notice that order is not
correct above. Edit it to make connections in proper order. An example of proper order will be:
I0 (C4 Sbus0 Sbus1 Sbus2 Sbus3 net29 net29 net27 net27 net25 net25 net23 net23 \
0 0 net31 0) ADD_SUB4BIT.
10. One final hack
Open the .pex netlist file and at the top of the file include this line
simulator lang=spectre
11. Now you are ready for some simulation!!!
Download the Ocean Script from the website. Edit the Ocean Script to give proper paths.The input file
will be your spectre.run1/netlist
Run the Ocean script.
-
8/12/2019 Synthesis Tutorial v 1.3
20/20
Logic synthesis and Place and Route Tutorial Page 20
IC Design and Test Portland State January 2011
L b U i i
V. Direct Place and Route Design
1. Go to the Encounter/flow Directory.
2. Before coming to this stage, make sure you have run a synthesis and place and route design flow. In
the flow directory you see there will two files HDL_name.v and HDL_name.vh
HDL_name.v is your verilog file created by NC-verilog from your schematic. This is your un-optimized
design.
HDL_name.vh is the optimized design produced by logic synthesis and given as input to Encounter which
places and routes the standard cells.
3. Delete the .vh extension file. On the command line
> rm HDL_name.vh
4. On the command line type
> uniquifyNetlist -top HDL_name.vh HDL_name.v
Uniquified netlist command provides a flattened netlist of your design. The HDL_name.vh is the output
of this command. The HDL_name.v is the input file to this command. The result should show succeeded.
5. The output file will become input to your encounter tool and it will place and route your original
design. On the command line write
> encounterinit encounter.tcl
6. The rest of the flow is same. After the encounter finishes, save the DEF file and import into cadence
virtuoso. Extract the netlist with parasitics and simulate it.