ASIC Lab Manual with Incisive(1)
ASIC Lab Manual with Incisive(1)
Developed By
Module 7: Running Gate Level Simulations on a Simple Counter Design ........ 100
Lab 7-1 Running Gate Level Simulations on a Simple Counter Design ......... 100
What Is Gate Level Simulation?........................................................ 100
SDF Annotation ........................................................................... 101
Simulating the Netlist with the xrun Command .............................. 104
Please save your design (RTL files) inside the RTL directory and keep
both RTL as well as test bench inside the simulation directory.
Libraries, LEF and Constraint files (SDC files) are kept in respective
directories. Simulation, Synthesis, gate_level_simulation,
Equivalence_checking, Physical_design and STA directories are used to
run simulation, synthesis, gate level simulation, logic equivalence
checking, physical design and timing analysis so that all log files,
command files and other tool generated files won’t get mixed up.
Source the cshrc file by typing ‘source <cshrc file>’ e.g.: - source cshrc
© 2017 Cadence Design Systems, Inc. All rights reserved. 5
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).
Invoke the tool by typing ‘nclaunch -new’ in the terminal.
NCLaunch window will appear like in the below screen shot and in the
NCLaunch window, select ‘Multiple Step’ 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.
Compilation
The next step is to compile (Checks syntax and semantics) the code. For this,
select both the design and testbench and choose the appropriate compilers.
• ncvlog for Verilog designs. (choose ncvlog for counter design as the design is
in verilog)
Any error in the code will be reported in the ‘Command Entry Window’.
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.
To know more about tool options, use help or pdfs present inside the doc directory of the tool.
Objective: To invoke the Code Coverage Tool, Incisive Metric Center (or
IMC) and analyze the code coverage for a simple counter
design with associated test bench.
In this lab, you use the Incisive® Metrics Center software to analyze your code
coverage.
XCELIUM1704
MDV1704
Coverage is a metric to indicate how well the design is exercised by the test bench.
There are two types of coverage:
Code coverage
Functional coverage
Code Coverage assesses how well the tests exercise the design code. It points to areas
that did not meet desired coverage criteria. You can then target these with further
tests. Code coverage in Incisive Coverage is classified as the following:
FSM Coverage – Interprets the synthesis semantics of the HDL design and monitors
the coverage of the FSM representation of control logic blocks in the design.
You will see two files here: counter. v, which is the design itself and
counter_test. v, which is the testbench, both written in the Verilog language.
Run the following xrun command to compile, elaborate and simulate your
counter design as well as prepare it for coverage analysis by including the –
coverage all option in the command; this will include all coverage types for
analysis.
xrun counter.v counter_test.v -access +rwc –coverage all –gui
The command above, along with simulating the design, will create the cov_work
directory and further creates a scope and test directory with coverage model and
coverage data, .ucm and .ucd files respectively.
symbol from the SimVision console window and load the coverage data into the tool
by clicking on the load button.
5. The imc tool starts and will open the following welcome page of the imc tool, if
you launch by typing imc in the console window. Then you need to load the
coverage model dir. into the tool by clicking on the load button and selecting the
path to the coverage model as follows.
7
.
8. Select the toggle coverage context from the pull-down menu and as seen this
creates a toggle coverage context as well and shows the toggling of the different
© 2017 Cadence Design Systems, Inc. All rights reserved. 17
signals covered/uncovered. As you can see rst is not fully toggled for both values of 1
and 0.
The tool used for synthesis (converting RTL to gate level netlist) is Genus™ Synthesis
Solution (Genus) in Legacy mode.
GENUS162
Getting Started
Please save your design (RTL files) inside the RTL directory and keep both
RTL as well as test bench inside the simulation directory. Libraries, LEF
and Constraint files (SDC files) are kept in respective directories.
Simulation, Synthesis, Gate_level_simulation, Equivalence checking,
Physical_design and STA directories are used to run simulation, synthesis,
gate level simulation, logic equivalence checking, physical design and
timing analysis so that all log files, command files and other tool
generated files won’t get mixed up.
Change the directory to synthesis and write a script file for synthesis.
The necessary inputs to perform synthesis are RTL, standard cell library and
constraints.
3. Loading libraries:
set_attribute library <library name>
This command will read the specified standard cell library from the specified
library path.
Here top. v is the top module and sub1.v and sub2.v are the sub modules that are instantiated
inside the top module.
7. Running synthesis:
set_attribute syn_generic_effort <effort level>
set_attribute syn_map_effort <effort level>
set_attribute syn_opt_effort <effort level>
1. Using SDC, we define clock period, pulse width, rise and fall time,
uncertainty and also input and output delays for different signals. The
snapshot below contains the constraints file used in counter design.
Starting Genus
5. Reading constraints:
read_sdc ../constraints/constraints_top.sdc
The following snapshot shows the Genus Legacy Terminal after Synthesis.
When the synthesis is complete, run the following steps to use the graphical interface.
Generating Reports
After completing synthesis, use the below command to dump out netlist, SDF, SDC etc.
for next stages of the flow.
Note: The commands listed above will generate netlist, SDF and SDC in
the synthesis directory. If you want, you can specify required directory to
save the output files.
Incremental Synthesis
Write results and database
Write Modus files and ATPG flow
3. Change to the synthesis directory (if you are not into this directory) by
entering the following command:
cd synthesis
6. Set the DFT Scan flip flop style for scan replacement using the following
command:
set_attr dft_scan_style muxed_scan
7. Prefix is added to the name of DFT logic that is inserted using the
following command:
set_attribute dft_prefix dft_ /
11. Specify the number of scan chains required to connect all FFs using the
following command. Here we have used one scan chain:
set_attr dft_min_number_of_scan_chains 1 /designs/counter
12. Specify the scan-in and scan-out ports of the scan chain using the
following command:
define_scan_chain -name top_chain -sdi scan_in -sdo scan_out \
-create_ports
13. Now connect the scan chains using the connect_scan_chains command.
This will include all original FFs that were mapped to scan flops.
connect_scan_chains -auto_create_chains
16. Write out the final netlist, SDF, ScanDEF and constraints using the
following commands:
17. We will now run the final ATPG analysis and vector generation. This step
will take the final scan chains and run through the basic ATPG flow. This
flow is implemented by the following command:
write_dft_atpg -library ../lib/slow_vdd1v0_basiccells.v
It will generate a directory “et_scripts” in current working location.
18. Change directory to et_scripts to see the files that are generated by
Genus.
counter.et_netlist.v (completed Verilog netlist used for ATPG tool)
Objective: To run the basic ATPG flow for a design in Modus Test.
Modus Test is the tool used to verify test logic inserted in the netlist during the
Synthesis stage.
Modus162
Getting Started
Please save your design (RTL files) inside the RTL directory and keep both
RTL as well as test bench inside the simulation directory. Libraries, LEF
and Constraint files (SDC files) are kept in respective directories.
Simulation, Synthesis, gate_level_simulation, Equivalence checking,
Physical_design and STA directories are used to run simulation, synthesis,
gate level simulation, logic equivalence checking, physical design and
timing analysis so that all log files, command files and other tool
generated files won’t get mixed up.
2. Invoke the Modus Test tool inside the et_scripts directory using the
command :
modus –legacy_gui
This step registers this project and allows you to bring up this design from any directory
with the GUI.
5. Setup and Methodology are blank. If you click on the Methodology tab,
you will see a number of default methodologies for your use. These are
not needed for this exercise since we will be running our commands and
flow from the pull-down menus.
7. Once the project has been created, the GUI will be modified as shown
below
This step will read in your netlist and libraries and compile them into Modus Test
binary model to be used for all future steps.
7. Click on the Tasks tab to see the running progress of the command. If you
click on any command in the Task pane, you can view the log file in the
Log tab.
Creates a “test view” of your circuit based on the pin assignments set in the assignfile.
In the Build Test mode window, specify the test mode name as FULLSCAN (a
default mode for an ATPG SI to SO configuration) and browse the Input pin
assignment file counter.FULLSCAN.pinassign from the et_scripts directory as
shown below.
This step takes the model created in the previous step and applies a fault model to the
circuit by placing faults on the appropriate nodes.
5. Verify the log file containing information about the Static Faults present
in the entire design and you can see it in the snapshot below.
This tells the tool to trace the scan chains from SO backwards and SI
forwards.
8. Now verify how many Controllable chains and how many Observable
chains we have in the design, you can see it in the snapshot below:
In the Verify Test Structures window select the Test mode name as FULLSCAN
and then click Run.
3. Once you have taken your circuit through the build and verify process. It
is now ready for vector generation.
Before writing the ATPG vectors, we will perform the scan and logic test to verify how
much test coverage can be achieved using the generated test patterns.
Scan test
Logic test
Scan Test
In Scan test, we generate patterns to verify simple shifting through the scan chains.
This is mainly to identify manufacturing bugs and to ensure you can shift safely from
Scan in (SI) to Scan out (SO).
3. The ATPG engine is now generating test patterns that test the scan chain.
Take a look at the log file and observe the resultant Fault Coverage in the
Testmode, Global Coverage and number of test sequences generated as
shown below.
Now we are going to create the standard Stuck-At model ATPG patterns.
3. You can view all patterns in the log window and the results will be saved
in the /testresults/Verilog directory.
Objective: To run the basic logic equivalence checking flow for a design.
The tool used for Equivalence checking (Comparing RTL to gate level netlist) is
Conformal® Logic Equivalence Checker (LEC).
Conformal LEC is a tool used for formal verification of designs at various stages in the
flow. Formal verification is the process of verifying designs using mathematical
methods. Equivalence Checking is the process of verifying the correctness of a
modified or transformed design (revised design) by comparing it with a reference
design (golden design).
CONFRML162
Get Started
Please save your design (RTL files) inside the RTL directory and keep both RTL as well
as test bench inside the simulation directory. Libraries, LEF and Constraint files (SDC
files) are kept in respective directories. Simulation, Synthesis, gate_level_simulation,
© 2017 Cadence Design Systems, Inc. All Rights Reserved. 59
Equivalence_checking, Physical_design and STA directories are used to run
simulation, synthesis, gate level simulation, logic equivalence checking, physical
design and timing analysis so that all log files, command files and other tool
generated files won’t get mixed up.
Let us understand the content of the dofile. Dofile is a script file used to run LEC and
below is an example for the dofile.
5. 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
add ignored outputs scan_out –revised
Ignores scan_in and scan_out pin
6. Constraint the scan enable (SE) pin to zero to keep the revised design in
functional mode.
add pin constraints 0 SE -revised
Important: Tool keeps the design in functional mode and ignore scan_in
pin while compare. Also scan_in is not a compare point.
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.
exit
INNOVUS162
In this section, you import a gate-level netlist and libraries into the Innovus
Implementation System.
Note: Do not use the window where you started the software for any
windowing or UNIX operations, except to communicate with the tool.
4. In a different xterm window than where you brought up the tool, view
the counter.globals file. Notice the design and library files that are
specified.
6. Click the Load button in the Design Import form, the Load Global Variables
window will appear.
8. To load the design and libraries, in the Design Import window, click OK.
Here is a brief description of the fields in the Design Import window.
Field Description
In this section, you learn how to view the MMMC settings, details about the objects
on the screen, and how to view and interpret what you see in the design window.
4. To enlarge the window, drag the corner of the window until you can see
all the modules in your design, as well as all the Innovus menus.
8. Expand the design window to display all the available pull-down menus.
9. To view more of the objects, click the Zoom Out icon or press Shift-
Z.
10. Move your cursor over the icons and notice that their functions are
displayed in text boxes, as shown here.
To view the hierarchical design that you imported, choose Tools ‒ Design Browser.
12. To expand the modules, click the plus sign (+) next to the categories of design
objects.
To view the I/O terminals, click the Terms plus sign (+).
13. When you are finished viewing the hierarchy, close the Design Browser
window.
In this section, you create a floorplan. You become familiar with the floorplanning
forms and icons.
c. Enter 2.5 for Core to Left, Core to Right, Core to Top and Core to
Bottom values.
To display more information about the options, on the Specify Floorplan
form, click Help.
The floorplan you will see should look like the above screenshot.
15. To measure the distance between the core area and the I/O boundary,
click the Ruler icon or press k.
16. To delete the ruler, click the Clear All ruler icon or press Shift+K.
17. To deselect ruler mode, click the Select By Box icon or press a.
a. To select the VDD and VSS nets, click the icon in the Net(s) field.
The Net Selection form is displayed.
b. In the Possible Nets pane, press Shift and VDD and VSS.
c. Click Add.
The selected nets appear in the Chosen Nets pane.
d. Click OK.
t. Set Start to 1.
u. Set Stop to 0.
Notice the power stripes and the vias connecting the rings to the
stripes are created.
a. To populate the field with VDD and VSS, click the icon next to the
Net(s) field.
b. Click Add to add the nets to the Chosen Nets field and click OK.
d. Click OK.
Notice that the power routes have been connected to the power planned
targets with relevant Vias.
3. Set the place mode to move unplaced I/O pins, based on the placement
of connected instances by running command:
setPlaceMode –place_global_place_io_pins true
After running placement or pre-CTS optimization, you run clock tree synthesis with
constraints on what buffers to use and the type of clock routing to implement.
1. To see all possible options for the clock tree synthesis command, run the
following:
set_ccopt_property * -help
2. Generate the remaining clock tree spec file constraints from the .sdc file
by running the command:
create_ccopt_clock_tree_spec
If you see error message about the clock net being not completely routed.
Ignore this error as later on, when you run the NanoRoute tool for the
remaining nets, this error will be fixed.
b. Select SI Driven.
3. Click OK.
5. Run setup and hold timing analysis by running the following commands:
timeDesign –postRoute
Are there any setup violations?
Answer: _________________
In this section, you run physical verification commands in the Innovus system.
Verify Geometry
Verify Connectivity
1. To display the power analysis setup form, choose Power – Power Analysis
– Setup.
c. Select wc.
e. Click OK.
2. Source the power.tcl file which contains the rules for global net power
connections by entering the following:
source power.tcl
4. Leaving all defaults as is, enter ./run1 in the Results Directory field.
5. Click OK.
This will run power analysis and generate power consumption values.
6. From the log file for this session, determine the following:
What is the total internal power?
Answer:
What is the total switching power?
Answer:
What is the leakage power?
Answer:
What is the total power consumed?
Answer:
Browse for Extraction tech file, click button, browse for QRC_Tech
folder using button and choose Filters field with All files(*), select
gpdk045.tch and click Add and close the window.
e. Click OK.
14. Make sure that Current Files is selected for Power Data.
c. At the bottom of the Edit Pad Location form, click Get Coord.
h. Click Add.
Notice that the Pad Location List field is populated with the coordinate
as VDDvsrc1.
j. Click Save.
19. In the Run Rail Analysis form, specify the name of the XY file Counter.pp
you just created in the File field.
21. Click Add so that the pane under the fields are populated with the type of
file, net name and file name.
1. To display the results of rail analysis, select Power – Report – Power & Rail
Result.
Notice that the pane on the left of the design window contains options to
run analysis.
2. Select Rail.
3. Select DB Setup.
This will bring up the Power and Rail Setup form. In this form:
b. In the Rail Database field, populate the field with the path to the
directory run1/VDD_25C_avg_* where * indicates a number which
increments every time you rerun the step. For example, this directory
name might be run/VDD_25C_avg_1.
Notice that the Innovus design window display shows the color-coded
voltage ranges that match the range.
Are there any red areas displayed in the main Innovus window?
Answer: _________________________________________
1. Select File-Save-GDS/OASIS.
b. Click OK.
XCELIUM1704
GLS is a step in the design flow to ensure that the design meets the functionality
after Synthesis or after placement and routing activities. We need a
synthesized/post-routed netlist, a testbench and an SDF (Standard Delay Format)
file. SDF will have all the delay information for the cell and the wire.
Here we will make use of the same test-bench that we used for the functional
simulation with some changes in the testbench. That is, we have to use the
$sdf_annotate system task to call the sdf file inside the testbench.
$sdf_annotate (“sdf_file”
{, module_instance}
{, “config_file”}
{, “log_file”}
{, “mtm_spec”}
{, “scale_factors”}
{, “scale_type”});
Note: We must specify the arguments to the $sdf_annotate system
task in the order shown in the syntax. We can skip an argument
specification, but the number of comma separators must
maintain the argument sequence. For example, to specify only
the first and last arguments, use the following syntax:
$sdf_annotate (“sdf_file”,,,,,, “scale_type”);
“sdf_file” The full or relative path of the SDF file. This argument is
required and must be in quotation marks. We can specify the file name
with the +sdf_file plus option on the command line.
Keyword Description
4. Click on counter_test
in the design browser
window, and then we will
get all the signals in the
6. Click on run
5. Select all the above signals
button in the
and send those selected objects
console window.
to waveform window by clicking
INV162 and
SSV162
You can start the Tempus tool using the command tempus.
You can start the Tempus TSO software using the command tempus -
tso.
The following are from the Physical design lab and will serve as inputs to Tempus:
In this section, you will be running Tempus style timing analysis inside of Innovus.
1. Let’s rerun the previous session of Place & Route inside the STA
directory instead of using a saved session.
LINUX# cd STA
LINUX# innovus –files runPnR.tcl
At the end of this session, the design is routed and timing analyzed.
To check the post route timing and optimization, need to set the
AOCV mode through setAnalysisMode.
b. Click OK.
The Timing Debug window opens.
c. Right-click on the path #1 in the Path List and select Show Timing
Path Analyzer.
You will see the Timing Path Analyzer window.
6. Save the design including the SPEF, DEF and the libraries.
saveDesign -rc -def -relativePath postRoute
7. Keep this session open if you would like for debugging purposes. You
can close it later.
2. Load the Innovus database into Tempus using the following command:
read_design –physical_data postRoute.dat/ counter
This loads the entire design along with the physical layout.
Open the Layout tab (click the sign to see other available tabs) to
confirm that the same layout from Innovus is also shown here in Tempus.
You can also load each individual corresponding files in the Setup
menu.
Once the design is loaded successfully, then generate the following reports.
5. Report the worst slack time for setup and hold respectively, using the
commands:
report_timing –late
report_timing –early
7. Open the Analysis tab (click the sign to see other available tabs).
After the timing analysis is done, you can see the histogram for the hold
analysis.
a. Browse through the Path list with Startpoint Pin as SE, right click on
the path and select Show Timing Path Analyzer.
You will see the Timing Path Analyzer window.
From the Timing Path Analyzer, if you want to debug violating paths, you can right
click on any of the signals and you will get additional options like interactive ECO
etc.
8. In the Timing Path Analyzer window, select the SE pin and right-click
and select Interactive ECO/WhatIf – Add Repeater.
a. Click get selected to populate the net information or just enter SE.
c. Click Eval.
<work_area>/postRoute.dat/mmmc/modes/sdc_cons/sdc_cons.sdc
Although the clock has automatically been set to propagated, the problem is
caused because of the SE and Reset signals being left as ideal networks. Therefore,
it is important to verify your constraints after each stage.
1. Let’s rerun the Place & Route session using the runPnR2.tcl file.
LINUX# cd STA
LINUX# innovus –files runPnR2.tcl
This runPnR2.tcl uses the counter2.view file, which in turn uses the fixed
counter_postCTS.sdc file.
At the end of this session, the design is routed, optimized for setup and
hold, and timing analyzed.
Later:
1. You can run timing analysis from within Innovus. You can also evaluate
and create timing-fixing ECOs interactively from within Tempus.