Professional Documents
Culture Documents
Reduction
Product Version Conformal 15.1
September 2015
Copyright Statement
© 2015 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence and the Cadence logo are
registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective
holders.
Contents
Purpose ....................................................................................................................... 4
How to monitor the runtime and memory used for the LEC process?.......................... 4
How to reduce runtime while reading the design and library files? .............................. 5
How to handle modeling of the design to reduce runtime? .......................................... 6
How to reduce the runtime for mapping? ..................................................................... 7
How to reduce runtime for Netlist to netlist comparison? ............................................. 9
How to handle runtime during a dynamic hierarchical run? ....................................... 10
How to handle the long runtime of comparison? ........................................................ 11
How to reduce runtime when facing aborts in the comparison? ................................ 12
How to speed up "analyze datapath" runtime using multithreading and other options?
................................................................................................................................... 13
Recommended dofile for faster runtime ..................................................................... 14
Summary ................................................................................................................... 17
References ................................................................................................................ 17
Support ...................................................................................................................... 17
Feedback ................................................................................................................... 17
Purpose
As the technology nodes are shrinking with time, the amount of logic placed on a chip is
increasing. The increased functionality on a single chip is resulting into highly complex
SoCs. Verification of these kinds of chips is a challenging and runtime-intensive activity.
This document provides the strategies that can help reduce the runtime at various
stages of the Conformal Equivalence Check flow.
The “Usage” is one of the most helpful command in monitoring the runtime. It displays
the total CPU runtime and memory used since the starting of the tool.
The Usage –auto –elapse command should be made a part of the run script. While
it will have a little overhead on runtime, the information can be used to track the step
that is taking long. You can use the information printed by the command to estimate the
runtime of the subsequent runs and debugging.
The “-auto” option will display the CPU and Memory usage at the end of every
command. For example:
The CPU time is the time consumed by the processor, and is not the same as the wall
clock time. Based on the output of this command, the machine and memory can be
chosen to make Conformal runs. Additionally, the runtime reduction technique can be
applied to the step taking the maximum time.
Reading the design and libraries are basic inputs to the tool. Taking the right steps at
this stage will help reduce the runtime significantly. While reading the design and library
files, the following tips can help reduce the runtime:
• Before reading in the design and library files, make a list of all the analog blocks
and memories, and declare these as black box using the “add notranslate
module” command. Since the analog blocks and memories are hard macros and
are pre-verified, handle the digital blocks verification using Conformal.
• Reading Verilog libraries is faster than Liberty libraries because the Liberty cell
definition has a larger footprint than the equivalent Verilog definition.
• For single language design, use a single “read design” command instead of
multiple “read design”. To read the VHDL designs, use the mapfile option to
compile multiple files in different libraries.
For example, if you have two Verilog design files, test1.v and test2.v, you can
read both the files with the same read design command:
• If you are aware of the top module of the design, you can specify it with the “-
root” option of the “read design” command. Along with this, use the “-
rootonly” switch as well. This will reduce the elaboration runtime because only
the root module will get elaborated instead of complete design scope.
• Large don’t care spaces can also increase the runtime. Hence, it is
recommended to have less number of X assignments in the RTL. The large
number of don’t care gates can also cause aborts later in the flow.
• Suppose you want to make some changes to one of the modules and then
reread that module. In such a scenario, you need not read the complete design
again. Instead, you can use the “-append” option. If you have made changes to
the “top.v” file, you can read this file again using the following command:
Note: In the case of top module being read again, the parameter values will not
pass over.
Here are a few tips which can help resolve runtime related issues during modeling:
• Immediately before switching to LEC mode, run the “set flatten model”
command. This will show the complete list of flattening options with the status
ON or OFF. All those options whose defaults are changed will be shown with an
asterisk (*). Hence, you can check this list and disable the options which are not
required.
• One major cause of high runtime is the result of using the “set flatten
model –seq_merge” command. If this option is turned ON, the tool will try to
apply sequential merge on the complete design.
1. Read the log file of the synthesis tool using the “read setup
information” command. It helps because Conformal can read the merge
information from the log files. However, this information is verified by the tool
before use.
Learn more at Cadence Online Support - http://support.cadence.com
© 2015 Cadence Design Systems, Inc. All rights reserved worldwide. Page 6
Conformal LEC: Strategies for Runtime reduction
3. If above two fail, get the list of merged points from the synthesis tool, and
read these using the “add instance equivalence” command.
• Look for the modeling message F34. It reports the message: F34: Convert X
assignment(s) as don’t care(s) (Occurrence: 1).
The high number of “X” increases the verification space because the tool will need to do
verification for all the combinations. If the occurrence is huge, it is recommended to
check the RTL because a high number of don’t care gates can increase the compare
runtime and also lead to aborts.
Here are the few things to consider while debugging runtime related issues during
mapping:
• If the message // Warning more than 1/3 of the key points have
mismatched names is encountered in the transcript window, It means that a
large number of key points have mismatched names. To handle this, create
renaming rules to match the names on either side. This reduces the runtime as
function-based mapping takes a lot of time as compared to name-based
mapping.
To apply the renaming rules, you can use the “add renaming rule” command. For
example:
The rule will change the string “ABC” to “XYZ” on the golden side. For the detailed
description of this command, refer to Conformal reference manual.
set mapping method –name only // This will turn on name based
mapping only.
set system mode lec
add renaming rule <rule name> ….
map key points
add renaming rule <rule name> ….
map key points
….
….
While it is iterative, it saves runtime because the name-based mapping is much faster
than the function-based mapping. This should be tried until the number of not-mapped
key points is zero.
• Check for the “set mapping method” command in your script. The command
can be used to change the default setting for mapping sequence, name-based
and then function-based. It is recommended not to change this setting because it
might result in higher runtime.
• To do phase mapping, turn on phase mapping only when you have already
compared the design. Here is the flow to use:
In this case, phase mapping will run only on the nonequivalent key points. It will
save the runtime considerably because phase mapping takes much more time
than the normal mapping.
• First, ensure that the two netlists are of the same design flow. It is important
because if the netlists are of different flows, they can have different datapath
architectures for the arithmetic operators. In such a case, the run may result into
irresolvable aborts.
• For netlist to netlist comparison, use the “–gate_to_gate” option with compare
command. This option of the compare command enables an algorithm that might
improve runtime of large gate-to-gate netlist comparisons.
The following key guidelines can help reduce runtime while using dynamic flow.
• Netlist to netlist comparison can also be done using dynamic hierarchical flow if
the two netlist are hierarchical.
• Using the “set compare effort auto” command might lead to a huge
runtime for comparison. If it is present in the dofile, it should be removed to
reduce the runtime.
• Using the “set compare effort light” command will also reduce the
runtime considerably. The compare engine in LEC can find non-eq more quickly
than it can find EQs. Hence, this option can be used to make sure that proper
design constraints and settings have been applied for the run. However, it result
in aborts.
• Additionally, using multithreading also helps in abort resolution and reducing the
runtime.
Here are a few suggestions which can optimize the runtime performance of “analyze
datapath”:
Important points:
a. This "-threads" option ONLY works with module-based datapath analysis. Hence,
you must also specify "-module" option.
Note: The analyze datapath (without -module) is not affected by the threads option.
//**************************************************************************
//*
//* Copyright (C) 2012-2015 Cadence Design Systems, Inc.
//* All rights reserved.
//*
//**************************************************************************
//**************************************************************************
//* The following illustrates a sample dofile for running
//* RTL vs gate netlist with hierarchical comparison flow.
//**************************************************************************
//**************************************************************************
//* Note: For more information on the commands/options used in
//* this sample dofile, launch the specific product and use the "MAN"
//* command or refer to that product's reference manual.
//**************************************************************************
//**************************************************************************
//* Optional lines of code are commented out. Uncomment if needed.
//**************************************************************************
//**************************************************************************
//* Sets up the log file and instructs the tool to display usage information
//**************************************************************************
//**************************************************************************
//* Specifies the LEC project that will collect and consolidate
//* information from multiple LEC runs
//**************************************************************************
//**************************************************************************
//* Black box the memory and analog blocks
//**************************************************************************
//**************************************************************************
//* Reads in the library and design files
//**************************************************************************
//**************************************************************************
//* Specifies renaming rules
//**************************************************************************
//add renaming rule <rulename> <string><string> [-Golden |-Revised |-BOth]
//**************************************************************************
//* Specifies user constraints for test/dft/etc.
//**************************************************************************
//add pin constraint 0 scan_en -golden/revised
//add ignore output scan_out -golden/revised
//**************************************************************************
//* Specifies the modeling directives for constant optimization
//* or clock gating
//**************************************************************************
set flatten model -seq_constant
set flatten model -gated_clock
//**************************************************************************
//* Enables auto analysis to help resolve issues from sequential
//* redundancy, sequential constants, clock gating, or sequential merging
//* This option automatically enables 'analyze abort -compare' if there
//* are any aborts to solve the aborts.
//**************************************************************************
//**************************************************************************
//* Specifies the number of threads to enable multithreading
//**************************************************************************
set parallel option -threads 4 -norelease_license
//**************************************************************************
//* Generates the hierarchical dofile script for hierarchical comparison
//**************************************************************************
write hier_compare dofile hier.do -replace -usage –threshold 500 \
-constraint -noexact_pin_match -verbose \
-prepend_string "report design data; usage; \
analyze datapath -module -resourcefile <file> -verbose; usage; \
analyze datapath -verbose; usage " \
-balanced_extraction -input_output_pin_equivalence \
-function_pin_mapping
//************************************************************************
// Executes the hier.do script
//**************************************************************************
//**************************************************************************
//* Generates the reports for all compared hierarchical modules
//**************************************************************************
Summary
It is recommended that you review the Conformal dofile before firing a run, and customize
it as per the design and synthesis strategy adopted. Add the suggested commands in the
flow from the beginning to make best use of the strategies provided. Applying the
strategies upfront will result in a significant reduction in the runtime and help in saving
unnecessary iterations.
References
Encounter Conformal Equivalence Checking User Guide
Visit Conformal 15.1 Product Manual Landing page for all the product manuals pertaining
to Conformal 15.1 release stream.
Support
Cadence Online Support provides access to support resources, including an extensive
knowledge base, access to software updates for Cadence products, and the ability to
interact with Cadence Customer Support. Visit https://support.cadence.com.
Feedback
Email comments, questions, and suggestions to content_feedback@cadence.com.