Front End Asic Flow Lab
Front End Asic Flow Lab
Laboratory Manual
Module 4:
Front-end ASIC Flow using Cadence Tools
Course Instructor:
Dr. Chetan Singh Thakur
Assistant Professor
Department of Electronic Systems Engineering
Indian Institute of Science, Bengaluru
Acknowledgement
This manual is adapted from a manual created by Cadence, titled “ASIC Design Flow”.
The content is updated where there are mismatches between the original document and the tool
flow used in our laboratory.
This document is meant for educational purpose only.
We acknowledge the University Support Team, Cadence Design Systems, Bengaluru, who are the
creators of the original document.
Contents
Acknowledgement ................................................................................................................................................................. 2
1. Getting started .................................................................................................................................................................. 4
Steps to Invoke Tools ........................................................................................................................................................... 4
Directory Structure ............................................................................................................................................................... 4
2. Verification ...................................................................................................................................................................... 5
Opening NCLaunch .............................................................................................................................................................. 5
Compilation .......................................................................................................................................................................... 7
Elaboration ........................................................................................................................................................................... 8
Simulation............................................................................................................................................................................. 9
3. Synthesis ......................................................................................................................................................................... 11
Synthesis without DFT.......................................................................................................................................................... 11
Synthesis with DFT (optional) .............................................................................................................................................. 14
4. Logic Equivalence Checking ............................................................................................................................................. 17
5. Timing Simulation ............................................................................................................................................................ 20
1. Getting started
Steps to Invoke Tools
• Log in to your linux account with the credentials shared.
o Default location after login: /home/dvlsi_group*
• Enter the following commands (every time after login):
o cd worklib_user<x>/Digital_worklib
o csh
o source /fetch/cshrc
• You would see the following message on the terminal:
• Copy the database folder into your digital worklib (First time)
o cp ../../../../Shares/counter_database.zip .
o unzip counter_database.zip
o mv counter_database counter_database_12dec
o NOTE: Do all changes in this directory. DO NOT ALTER the original database.
Directory Structure
Enter the newly created directory using cd <dir_name> command. See all folders.
• cd counter_database_12dec
• ls
Let us understand the directory structure.
• Captable – Contains Cap table. Captable file contains resistance and capacitance
values which are used to model the interconnect parasitics of a design.
• Constraints – Contains SDC file. Constraints file contains information regarding the
clocks and I/Os of the design, such as clock period, input delay etc.
• Equivalence checking – Used to check logical equivalence between RTL and
synthesized netlist.
lef – Contains library exchange files (lef). LEF file contains information for
representing the physical layout of an integrated circuit in an ASCII format. It
includes design rules and abstract information about the cells.
• lib – Contains library files for synthesis, with slow and fast versions of cells for setup
and hold checks, respectively.
• physical design – folder to run the physical design of the synthesized netlist.
• rtl – Contains RTL design files (.v files)
• simulation – Contains testbench files. It is the run directory for simulations.
• synthesis – folder to run synthesis of the RTL.
2. Verification
IES (Incisive Enterprise Simulator) is the tool used for verification. Navigate to Simulation
directory where you have kept your RTL and test bench (simulation directory).
Opening NCLaunch
Click on File → Set Design Directory. The following window opens. Check that the design
directory points to the folder you are in.
‘Create cds.lib File’ option and a ‘Create a cds.lib file’ window will open. Click ‘Save’ option.
A ‘New cds.lib File’ window will appear. Click any of the three options available depending on
your RTL and click ‘OK’. As the counter design is in verilog, the third option is selected.
Click OK to save these settings. This needs not be repeated as long as simulations are run in the same
directory.
\
Compilation
The next step is to compile (Checks syntax and semantics) the code. Navigate to one folder
higher, using the symbol.
Select the design files from RTL directory, and testbench from simulation directory. Ignore
any design files in the simulation directory.
Any error in the code will be reported in the ‘Command Entry Window’.
Elaboration
After rectifying the errors in the code, the next step is elaboration (constructs design hierarchy
and connects signals). Once the compilation is successfully completed, open the ‘worklib’
directory on the right side of the window and we can see the design objects created inside.
Elaboration should be performed on the testbench as testbench is the top module at this stage
and design is instantiated inside the testbench.
Select the testbench module (counter_test) and select the launch elaborator’ (ncelab) key.
Simulation
After elaboration, the next step is simulation (executes simulation code). For this we have to
send the snapshot generated during elaboration to the simulator.
Open the ‘snapshots’ folder and select the snapshot and click on ‘launch simulator’ option.
Launch simulator’ will open ‘Design Browser’ and ‘console’ windows. ‘Console –SimVision’
window can be used to perform simulation in command mode and hence can be minimized
while using ‘Design Browser –SimVision’ window to run simulation in GUI mode.
In the Design Browser window, select the testbench module (counter_test) and select
the ‘waveform’ option. A ‘waveform –SimVison’ window will appear
In the waveform window, we can see different ports in the design. Click on the Run
simulation key to start the simulation. Use the ‘pause’ key to interrupt or stop the simulation.
Use different options like zoom in(+), zoom out(-) etc to analyze the plot. Use ‘=’ symbol to
see the full waveform plot.
After verifying the design, close the tools. We can now proceed for synthesis.
To know more about tool options, use help or pdfs present inside the doc directory of the tool.
3. Synthesis
The tool used for synthesis (converting RTL to gate level netlist) is Genus.
The necessary inputs to perform synthesis are RTL, standard cell library and constraints.
Let us see the usage and purpose of each command.
This command will set the path for the standard cell library.
set_attribute hdl_search_path <rtl path>
This command will read the specified standard cell library from the specified library
path.
read_hdl <rtl design>
This command reads in the timing constraints file. Here we have to provide the
constraints file name along with the path. Explanation on constraints file is provided
Synthesize –to_mapped –effort medium
This command will perform synthesis by combining the generic, mapped and
incremental synthesis and – effort medium command specifies the synthesis effort. The
effort can be set to ‘low’, ‘medium’ or ‘high’ depending upon the scenario.
The following commands write the outputs of synthesis – the netlist, the constraints file,
and the delay file for basic gates.
Note: - In counter design, you can see a script file ‘rc_script.tcl’ inside the synthesis directory.
Please open the script file for further understanding.
Using SDC, we define clock period, pulse width, rise and fall time, uncertainty and also input and
output delays for different signals. Below is the constraints file used in counter design.
This command will define clock with period 10ns and 50% duty cycle and signal is high in
Note: - If the script file is in the current working directory (synthesis directory), we need not
have to provide the path for the script.
report qor command added in the script file will show the highlights of the synthesis report.
After synthesis, to see the schematic, launch the gui using the below command.
‘gui_show’ in the terminal. Click on the Plus icon and choose schematic.
Use ‘gui_hide’ command to close the gui.
To view the synthesis reports, enter the following commands in the terminal:
report timing
report area
report power
Note: - Use just report command to know what all different reports you can dump out from genus.
After completing synthesis, exit the tool using the ‘exit’ command in the terminal.
Synthesis with DFT (optional)
Now let us look at the content of the run script(rc_dft_script.tcl). Here is a breakdown of the script
The DFT scan FF style for scan replacement using the below command.
Define the test signals (define_dft shift_enable) using the below command.
define_dft shift_enable -name {scan_en} -active {high} -create_port {scan_en}
It is recommended you check DFT rules multiple times during a DFT flow using the below command
check_dft_rules
As you can see that there are no registers that fail DFT rules, which means that all of 8 registers
are eligible for scan connection.
Specify the number of scan chains required to connect all FF’s using the below command.
Here we have used 1 scan chain.
set_attr dft_min_number_of_scan_chains 1 /designs/counter
Specify the scan in and scan out ports of the scan chain using the command
define_dft scan_chain -name top_chain -sdi scan_in -sdo scan_out -create_ports
Once scan ports has been created, perform the technology depended synthesis using the
below command.
synthesis –to_mapped.
Now connect the Scan chains using connect_scan_chains RC command. This will include all
original FF’s that were mapped to scan flops.
connect_scan_chains -auto_create_chains
You can view the dft chains using the below command as shown.
report dft_chains
We will now run the final ATPG analysis and vector generation. This step will take the final
scan chains and run through the ET flow for basic ATPG. This flow is implemented by the
command
write_et_atpg -library ../Lib/slow_vdd1v0_basiccells.v
It will generate a directory ‘et_scripts’ in current working location.
Write out the final netlist, SDF & constraints using the below commands.
Write_hdl > counter_netlist.v
write_sdf -timescale ns -nonegchecks -recrem split -edges check_edge > delays.sdf
Write_sdc > count_sdc.sdc
Change directory to et_scripts to see the files that are generated by Genus.
If the LEC Result is a PASS, exit the tool with the ‘exit’ command, confirm with ‘yes’.
DOFILE
Ignore the scan input(scan_in) and Scan output (scan_out) pins (as these instances are not available
in golden design and primary output key point is compare point)
add ignored inputs scan_in –revised [ignores scan_in pin]
add ignored outputs scan_out –revised [ignores scan_out pin]
Constraint the scan enable (SE) pin to zero to keep the revised design in functional mode.
add pin constraints 0 SE -revised [tool keeps the design in functional mode and ignore scan_in
pin while compare. Also scan_in is not a compare point]
Set system mode lec
Note: Conformal lec got two modes of operation i.e. SETUP mode and LEC mode. Setup mode is used to
prepare the design to be compared. Any command that affects the way the design is modeled will need
to be issued in this mode. LEC mode is where the designs will get modeled, key points mapped and
where the compare process takes place.
Once the compare process is completed, Conformal LEC will print a summary report that tells
how many key points are equivalent, non-equivalent, aborted and not compared. It
will also report a table of all violated checklist items with PASS/FAIL status.
Note: Use command ‘set gui on’ to turn on GUI window. In case of mapping issue or comparison issue
or not equivalence, use mapping manager or debug manager or Schematic viewer options in LEC to
resolve the issue.
Note: Same is the flow to compare netlist generated at different stages of physical design. Use proper
modelling directives and constraints.
Navigate to the gate_level_simulation folder. This folder contains the slow cells library file
to check that the design works even with worst case delays, and the testbench.
Copy the SDF file from the synthesis folder to this folder using the command:
cp ../synthesis/delays.sdf .
Open the testbench file. You can observe the following initial block.
This block takes the delays.sdf file and back-annotates the delays in the netlist, taking the
maximum delay into account. The hierarchical path to the top module of design must also
be given. The log file will be stored in sdf.log.
The simulation process is the same as mentioned in the verification section. Open
NCLaunch, create a new cds.lib file in this directory, when simulation is done here for the
first time.
In the NClaunch browser, navigate to the netlist file in the synthesis folder, and click on it.
Also select (using CTRL key) the testbench and slow cells library file, and compile all of them
simultaneously. Once the design is compiled, you will see standard gates and logic blocks
that are used in the design.
On elaborating the testbench, in the console window, you must see a message “Reading SDF
File …” with no errors. Annotated = 100% must be seen.
Run the simulation and observe the waveform in SimVision to check functionality. Observe
that the registers no longer change immediately at clock edge, but take some time to
change.
You may also encounter glitches in multi-bit signals. But these can be ignored unless they
happen very close to the next clock edge. Here the counter changes as 1 → 0 → 2. Expected
behaviour is 1 → 2.