Smart LEC
Smart LEC
Copyright Statement
© 2021 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
Conformal Collection: Smart LEC ................................................................................ 3
Smart LEC: Analyze Compare .................................................................................... 4
Smart LEC: Smart Instance Selection ....................................................................... 11
Smart LEC: Parallel Analyze Module ......................................................................... 16
Smart LEC: Parallel Hierarchical Comparison .......................................................... 19
Smart LEC: Parallel Datapath Analysis ..................................................................... 34
Smart LEC: Parallel Hierarchical Comparison with Shared Memory ......................... 38
Support ...................................................................................................................... 42
Feedback ................................................................................................................... 42
This is a collection of user guides for using the Smart LEC verification.
• Analyze Compare: executes the entire comparison step in the most optimal
turnaround time. Based on the design's
characteristics, analyze_compare automatically executes the most appropriate
combination of commands and options to complete the comparison.
This feature is available in Conformal LEC 19.10-p100 and requires Smart LEC license.
Analyze Compare
Example
Here is an example of a comparison. The top four bars show different run time by using
different datapath and compare strategies.
Command Syntax
analyze_compare
[-ABORT_Stop <integer>]
[-RESOURCEFILE <filename>]
[-THREADS <integer>[,<integer>]]
[-NONEQ_Stop <integer>]
[-VERbose]
(LEC Mode)
Parameters
• -ABORT_Stop
Stops the command after finding the specified number of abort points.
• -RESOURCEFILE <filename>
Specifies the resource filename to analyze the datapath modules. This is used
for DC netlists.
• -THREADS <integer>[,<integer>]
Specifies the minimum and maximum number of threads. If
only one number entered, this specifies both the minimum and maximum number
of threads.
For example, -threads 2 specifies two threads; -thread 2, 4 specifies a minimum
of two threads, and a maximum of four threads. If -threads is not specified, LEC
honors the setting from
• -NONEQ_Stop <integer>
Stops after finding the specified number of nonequivalent points.
• -VERbose
After reading both designs, entering LEC system mode, and adding all compare points,
just execute the analyze_compare command.
Note that the analyze_compare command works only on added compared points and
should be used after the add_compared_points command.
Example Output
LEC will output the summary of datapath quality (if it invoked datapath analysis) and the
summary of compare results.
// Command: set_system_mode lec
...
// Command: add_compared_points -all
// 64 compared points added to compare list
// Command: analyze_compare
// Note: WALLLACE_CSA_DUMMY_OP28(csa): MDP quality evaluated 100% success
// Note: csa_tree_add_597_44_pad_groupi: MDP quality evaluated 100% success
// Note: mult_66: quality evaluated 76% success
// Note: mult_70: quality evaluated 76% success
// Note: mult_74: quality evaluated 81% success
// Note: mult_78: quality evaluated 100% success
=====================================================================
Compared points PO DFF Total
---------------------------------------------------------------------
Equivalent 32 32 64
=====================================================================
Note that if analyze_partition is invoked, LEC will also output messages of every
iteration in the partition run.
Benchmark Results
Here are the benchmark results between a classic LEC strategy and Smart LEC
analyze_compare.
For Genus netlists, you must read in the implementation information before switching to
LEC mode:
TCL_SETUP> read_implementation_information <dir> -revised <label>
Or
TCL_SETUP> set_datapath_option -resourcefile <file>
The following is the Smart LEC dofile template to run with Genus synthesis netlist.
set_log_file ./rtl2map.lec.log -replace
usage -auto -elapse
set_verification_information ./rtl_kb_test1defaultkb_test1_mapv_db
read_implementation_information fv/kb_test2 -revised kb_test1defaultkb_test1_mapv
set_parallel_option -threads 4
#*****************************************************************
# Specifies the parallel hier compare workers here
#*****************************************************************
# set_parallel_option -cluster [LSF | SGE]
report_design_data
report_black_box
uniquify -all -nolib -golden
set_flatten_model -seq_constant
set_flatten_model -seq_constant_x_to 0
set_flatten_model -nodff_to_dlat_zero
set_flatten_model -nodff_to_dlat_feedback
set_flatten_model -gated_clock
...
#add_pin_constraints 0 {SE} -revised
#add_pin_constraints 0 {TM} -revised
#add_ignored_outputs {so} -revised
#add_name_alias ./fv/kb_test2/kb_test1defaultkb_test1_mapv.singlebit.alias.json.gz -
revised
#set_mapping_method -alias -revised
#add_renaming_rule r1alias _reg((\\\[%w\\\])*(/U\\\$%d)*)$ @1 -type dff -both
set_analyze_option -auto
#********************************************************************
#* Enables smart instance selection
#********************************************************************
set_hier_compare_selection -smart
write_hier_compare_dofile ./hier_tmp3.lec.do -noexact_pin_match \
-constraint -usage -replace -balanced_extraction \
-input_output_pin_equivalence \
-prepend_string "report_design_data; usage" \
-compare_string "analyze_compare -verbose "
#********************************************************************
# Executes the hier.do script with parallel hier compare
#********************************************************************
go_hier_compare ./hier_tmp3.lec.do -dynamic_hierarchy
Note: you can also obtain this dofile script template from Genus synthesis run with
'write_do_lec -smart ...'
The following is the Smart LEC dofile template to run with third party netlist.
#**************************************************************************
#* Sets up the log file and instructs the tool to display usage information
#**************************************************************************
set_log_file lec.hier.log.$LEC_VERSION -replace
usage -auto -elapse
#**********************************************************************
#* Reads in the library and design files
#************************************************************************
read_library .... -replace -both
read_design -verilog .. -replace -golden -noelaborate
elaborate_design -golden
read_design -verilog .. -replace -revised -noelaborate
elaborate_design -revised
report_design_data
report_black_box -detail
uniquify -all -nolibrary
#********************************************************************
#* Specifies renaming rules
#********************************************************************
#add_renaming_rule [-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
#*****************************************************************
# Specifies the parallel hier compare workers here
#*****************************************************************
# set_parallel_option -cluster [LSF | SGE]
# set_parallel_option -workers [localhost | batch | ...]
# set_parallel_option -batch_command "..."
# set_parallel_option -rsh_command "..."
#********************************************************************
#* Enables smart instance selection
#********************************************************************
set_hier_compare_selection -smart
#********************************************************************
#* Generates the hierarchical dofile script for hierarchical comparison
#********************************************************************
write_hier_compare_dofile hier.do -replace -usage \
-constraint -noexact_pin_match -verbose \
-prepend_string "report_design_data; usage;" \
-compare_string "analyze_compare -resourcefile <resourcefile> \
-verbose; usage;" \
-balanced_extraction -input_output_pin_equivalence \
-function_pin_mapping
#********************************************************************
# Executes the hier.do script with parallel hier compare
#********************************************************************
go_hier_compare hier.do -verbose
#********************************************************************
#* Generates the reports for all compared hierarchical modules
#********************************************************************
report_hier_compare_result -all -usage
report_hier_compare_result -abort -usage
report_hier_compare_result -noneq -usage
report_verification -hier -verbose
Note: you can also obtain this dofile script template using Conformal 'write_template'.
Smart LEC has an analytic engine that selects instances for hierarchical comparison for
the best quality in runtime and aborts resolution. With the
set_hier_compare_selection -smart command, Smart LEC uses the engine to
write out the selected instances for comparison.
On average, with the smart instance selection, a 1.6X speedup can be achieved in
hierarchical comparison runtime with the same quality in abort resolution.
This feature is available in Conformal LEC 19.10-p100 and requires Smart LEC license.
Usage
Under some scenarios, smart instance selection might not have the best extraction. For
example:
Benchmark Result
600 regression cases were run using a threshold of 50, 500, and 5000 and the smart
selection feature. In these runs, smart selection consistently shows runtime
improvement.
The following is the Smart LEC dofile template to run with Genus Synthesis netlist.
set_log_file ./rtl2map.lec.log -replace
usage -auto -elapse
set_verification_information ./rtl_kb_test1defaultkb_test1_mapv_db
read_implementation_information fv/kb_test2 -revised kb_test1defaultkb_test1_mapv
set_parallel_option -threads 4
#*****************************************************************
# Specifies the parallel hierarchical compare workers here
#*****************************************************************
# set_parallel_option -cluster [LSF | SGE]
# set_parallel_option -workers [localhost | batch | ...]
# set_parallel_option -batch_command "..."
# set_parallel_option -rsh_command "..."
...
set env(CDN_SYNTH_ROOT) "/lan/fed/rcrel/GENUS171/latest/tools.lnx86"
...
set_undefined_cell black_box -noascend -both
add_search_path -library . ..latest/tools.lnx86/lib/tech
read_library -liberty -both tsmc_25.lib
...
set_naming_rule "%s\[%d\]" -instance_array
set_naming_rule "%s_reg" -register -golden
set_naming_rule "%L.%s" "%L\[%d\].%s" "%s" -instance
set_naming_rule "%L.%s" "%L\[%d\].%s" "%s" -variable
set_undriven_signal Z -golden
report_design_data
report_black_box
uniquify -all -nolib -golden
set_flatten_model -seq_constant
set_flatten_model -seq_constant_x_to 0
set_flatten_model -nodff_to_dlat_zero
set_flatten_model -nodff_to_dlat_feedback
set_flatten_model -gated_clock
...
#add_pin_constraints 0 {SE} -revised
#add_pin_constraints 0 {TM} -revised
#add_ignored_outputs {so} -revised
#add_name_alias ./fv/kb_test2/kb_test1defaultkb_test1_mapv.singlebit.alias.json.gz -
revised
#set_mapping_method -alias -revised
#add_renaming_rule r1alias _reg((\\\[%w\\\])*(/U\\\$%d)*)$ @1 -type dff -both
set_analyze_option -auto
#********************************************************************
#* Enables smart instance selection
#********************************************************************
set_hier_compare_selection -smart
write_hier_compare_dofile ./hier_tmp3.lec.do -noexact_pin_match \
-constraint -usage -replace -balanced_extraction \
-input_output_pin_equivalence \
-prepend_string "report_design_data; usage" \
-compare_string "analyze_compare -verbose "
#********************************************************************
# Executes the hier.do script with parallel hier compare
#********************************************************************
go_hier_compare ./hier_tmp3.lec.do -dynamic_hierarchy
report_verification -hier
...
write_verification_information
report_verification_information
...
Note: you can also obtain this dofile script template from Genus synthesis run with
'write_do_lec -smart ...'
The following is the Smart LEC dofile template to run with DC netlist
#**************************************************************************
#* Sets up the log file and instructs the tool to display usage information
#**************************************************************************
set_log_file lec.hier.log.$LEC_VERSION -replace
usage -auto -elapse
#**********************************************************************
#* Reads in the library and design files
#************************************************************************
read_library .... -replace -both
read_design -verilog .. -replace -golden -noelaborate
elaborate_design -golden
read_design -verilog .. -replace -revised -noelaborate
elaborate_design -revised
report_design_data
report_black_box -detail
uniquify -all -nolibrary
#********************************************************************
#* Specifies renaming rules
#********************************************************************
#add_renaming_rule [-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.
#********************************************************************
set_analyze_option -auto -report_map
#***********************************************************************
#* Specifies the number of threads to enable multithreading
#***********************************************************************
set_parallel_option -threads 4
#*****************************************************************
# Specifies the parallel hier compare workers here
#********************************************************************
#* Enables smart instance selection
#********************************************************************
set_hier_compare_selection -smart
#********************************************************************
#* Generates the hierarchical dofile script for hierarchical comparison
#********************************************************************
write_hier_compare_dofile hier.do -replace -usage \
-constraint -noexact_pin_match -verbose \
-prepend_string "report_design_data; usage;" \
-compare_string "analyze_compare -resourcefile <resourcefile_-verbose; usage;" \
-balanced_extraction -input_output_pin_equivalence \
-function_pin_mapping
#********************************************************************
# Executes the hier.do script with parallel hier compare
#********************************************************************
go_hier_compare hier.do -verbose
#********************************************************************
#* Generates the reports for all compared hierarchical modules
#********************************************************************
report_hier_compare_result -all -usage
report_hier_compare_result -abort -usage
report_hier_compare_result -noneq -usage
report_verification -hier -verbose
Note: you can also obtain this dofile script template using Conformal 'write_template'.
This feature is available in Conformal 20.20-p100 and requires a Smart LEC license.
Command Usage
or
TCL_SETUP> analyze_module [-threads <integer>[,<integer>]]
When the analyze_module command is enabled, LEC will show the following message.
When the -custom_dofiles option is specified, the analyze_module command will not
use its built-in strategies.
Benchmark Results
The following are the benchmark results in which we have compared the
analyze_module command with different configurations.
This feature is available in Conformal LEC 19.10-p100 and requires Smart LEC license.
To achieve parallel efficiency, LEC uses continuous workers to execute the module
compare. A worker is a LEC process that contains the entire design for module
comparisons. Workers can run on the localhost or remote machines.
During a run, workers collaborate with each other to compare the modules in parallel.
When switching between the different modules, workers quickly set the target module
and perform verification without reloading the design data.
Workers use all LEC multi-threading features, including compare and module datapath
analysis (MDP), to achieve maximum parallelization.
Smart Scheduling
LEC uses smart scheduling of tasks for workers during a parallel hierarchical
comparison. The following diagram shows how a worker, once completed a
comparison, immediately picks the next available module with the highest priority to
compare.
Saving Runtime
LEC achieves faster turnaround time by evenly distributing tasks to the workers. The
following illustrates how go_hier_compare saves runtime over run_hier_compare.
A parallel hierarchical comparison is most effective for situations with the following
properties.
Before running parallel hierarchical compare, some resource settings are required to
ensure the comparison runs smoothly:
• Specify the number of workers and the resource from which the workers will be
activated.
You can resource the parallel comparison from the current machine or through remote
servers (using either the batch command or rsh command).
The following sections will show examples of how to configure for each.
The following configures a parallel hierarchical comparison from the current machine.
The -cluster option specifies the type of the cluster for the batch mode. LEC supports
LSF (Load Sharing Facility) and SGE (Sun Grid Engine) cluster queuing systems. The
default is LSF.
The -batch_command option specifies the batch command to use for submitting the job
to the cluster.
The following configures a parallel hierarchical comparison from remote machines using
the rsh command to log into the servers:
TCL_SETUP> set_parallel_option -workers server1 server2
TCL_SETUP> set_parallel_option –rsh_command \"rsh\"
The above example uses rsh to login server1 and server2 and invokes 2 workers.
Note that the remote machines must have the same Linux distribution for parallel
hierarchical comparison. You can execute the Linux command uname -mrs to check
whether the Linux distributions are the same.
The following is the go_hier_compare command syntax. It generally supports the same
set of options as run_hier_compare with a few exceptions discussed in the next
section.
go_hier_compare
<dofile_name>
Once the resource settings are set, you can run the parallel hierarchical compare with a
usage similar to run_hier_compare. The output will also be similar as running
run_hier_compare. The following is a sample log file.
Here are some guidelines to help the parallel hierarchical compare be more effective.
• No sub-module dominates the runtime over than 50%, better to less than 30%.
• Large design.
After the comparison is completed, LEC computes the results of the flattened view, also
called the top-level view, from the modules compared as verification information. The
verification information mainly consists of mapping, compare, and modeling information.
The following is an example of incorrect usage. The following results inaccurate data or
will cause a conflict when writing data by -append_string.
write_hier_compare hier.do \
-append_string "write_verification_information"
go_hier_compare hier.do
For verification information, go_hier_compare collects the verification result from the
module result. Therefore, after hierarchical compare, you can write the UVI as the
following example.
write_hier_compare_dofile hier.do
go_hier_compare hier.do
write_verification_information
You can use go_hier_compare multiple times with a different root module. However,
never change the design data between the hierarchical compare.
Open them using a browser. The browser used must have internet access. The
following diagram shows the example of timeline chart.
timeline.htm
To check on the progress of Job33, view the log in the following directory:
% vim LEC.tmp.5833/gohier.0/33/1.log
If the tools hangs as illustrated in the following log file, it means LEC is taking some time
to start the workers.
...
// Note: Checkpoint file /home/.../LEC.tmp.5833/gohier.0/ckp saved successfully
...
// Command: submit hier -dir ....
// Command: !cfm_env gohier .... <--hanging here
Possible causes:
• Server pending: check the setting of batch_command, or run the remote process
on the localhost.
Debug: RPC
Both localhost and remote servers use the same protocol: RPC over HTTP. If you find
the following message:
// Finish loading 4 workers
// Warning: RPC out of order ['HTTP request fails', 'HTTP request fails'...
• Execute command
rpc run -startr -allow_e -report_url x.info x.check
• Ping the address shown in above (do not include the port), to see if this is an IT
issue.
Debug: batch_command
If you suspect there is problem with cluster setting and batch_command, follows the
debug steps, and send feedback to R&D.
test.py
from subprocess import *
import sys, json
j = json.load(open(sys.argv[1]))
cmd = j['workers'][0][:-1] + \
['uname -mrs > log; pwd >> log; lec -nogui < /dev/null >> log']
print(cmd)
p = Popen (cmd)
The highlight index here is the number of worker you want to test.
You can save the settings required to invoke workers to a configuration file. To execute
the configuration file:
TCL_SETUP> go_hier_compare -configure <worker configuration file>
A worker configuration file is a json file containing the arguments needed to invoke
workers. Here is an example that calls two workers from the configuration file.
{
"workers" : [
[
Note that only checkpoint can only be restarted on the same Linux distribution. (using
%> uname -mrs)
You can evaluate the capability of this feature with the following sample testcase.
The following is the Smart LEC dofile template to run with Genus Synthesis netlist
set_log_file ./rtl2map.lec.log -replace
usage -auto -elapse
set_verification_information ./rtl_kb_test1defaultkb_test1_mapv_db
read_implementation_information fv/kb_test2 -revised kb_test1defaultkb_test1_mapv
set_parallel_option -threads 4
#*****************************************************************
# Specifies the parallel hier compare workers here
#*****************************************************************
# set_parallel_option -cluster [LSF | SGE]
# set_parallel_option -workers [localhost | batch | ...]
# set_parallel_option -batch_command "..."
# set_parallel_option -rsh_command "..."
...
set env(CDN_SYNTH_ROOT) "/lan/fed/rcrel/GENUS171/latest/tools.lnx86"
...
set_undefined_cell black_box -noascend -both
add_search_path -library . ..latest/tools.lnx86/lib/tech
read_library -liberty -both tsmc_25.lib
...
set_naming_rule "%s\[%d\]" -instance_array
set_naming_rule "%s_reg" -register -golden
set_naming_rule "%L.%s" "%L\[%d\].%s" "%s" -instance
report_design_data
report_black_box
uniquify -all -nolib -golden
set_flatten_model -seq_constant
set_flatten_model -seq_constant_x_to 0
set_flatten_model -nodff_to_dlat_zero
set_flatten_model -nodff_to_dlat_feedback
set_flatten_model -gated_clock
...
#add_pin_constraints 0 {SE} -revised
#add_pin_constraints 0 {TM} -revised
#add_ignored_outputs {so} -revised
#add_name_alias ./fv/kb_test2/kb_test1defaultkb_test1_mapv.singlebit.alias.json.gz -
revised
#set_mapping_method -alias -revised
#add_renaming_rule r1alias _reg((\\\[%w\\\])*(/U\\\$%d)*)$ @1 -type dff -both
set_analyze_option -auto
#********************************************************************
#* Enables smart instance selection
#********************************************************************
set_hier_compare_selection -smart
write_hier_compare_dofile ./hier_tmp3.lec.do -noexact_pin_match \
-constraint -usage -replace -balanced_extraction \
-input_output_pin_equivalence \
-prepend_string "report_design_data; report_unmapped_points -not" \
-compare_string "analyze_compare -verbose "
#********************************************************************
# Executes the hier.do script with parallel hier compare
#********************************************************************
go_hier_compare ./hier_tmp3.lec.do -dynamic_hierarchy
report_verification -hier
...
write_verification_information
report_verification_information
...
Note: you can also obtain this dofile script template from Genus synthesis run with
'write_do_lec -smart ...'
The following is the Smart LEC dofile template to run with third party netlist
#**************************************************************************
#* Sets up the log file and instructs the tool to display usage information
#**************************************************************************
set_log_file lec.hier.log.$LEC_VERSION -replace
usage -auto -elapse
#**********************************************************************
#* Reads in the library and design files
#************************************************************************
read_library .... -replace -both
read_design -verilog .. -replace -golden -noelaborate
elaborate_design -golden
read_design -verilog .. -replace -revised -noelaborate
elaborate_design -revised
report_design_data
report_black_box -detail
uniquify -all -nolibrary
#********************************************************************
#* Specifies renaming rules
#********************************************************************
#add_renaming_rule [-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.
#********************************************************************
set_analyze_option -auto -report_map
#***********************************************************************
#* Specifies the number of threads to enable multithreading
#***********************************************************************
set_parallel_option -threads 4
#*****************************************************************
# Specifies the parallel hier compare workers here
#********************************************************************
#* Enables smart instance selection
#********************************************************************
set_hier_compare_selection -smart
#********************************************************************
#* Generates the hierarchical dofile script for hierarchical comparison
#********************************************************************
write_hier_compare_dofile hier.do -replace -usage \
-constraint -noexact_pin_match -verbose \
-prepend_string "report_design_data; usage;" \
-compare_string "analyze_compare -resourcefile <resourcefile> \
-verbose; usage;" \
-balanced_extraction -input_output_pin_equivalence \
-function_pin_mapping
#********************************************************************
# Executes the hier.do script with parallel hier compare
#********************************************************************
go_hier_compare hier.do -verbose
#********************************************************************
#* Generates the reports for all compared hierarchical modules
#********************************************************************
report_hier_compare_result -all -usage
report_hier_compare_result -abort -usage
report_hier_compare_result -noneq -usage
report_verification -hier -verbose
Note: you can also obtain this dofile script template using Conformal 'write_template'.
Smart LEC provides the complete parallelization for datapath analysis. The
parallelization can speed up the datapath analysis by 6X with eight threads when
handling datapath intensive designs.
This feature is available in Conformal LEC 19.10-p100 and requires Smart LEC license.
Background
Parallel datapath analysis before 19.10 is not supported in RTL side analysis. There are
two kinds of datapath analysis, RTL analysis and Netlist analysis (Module Base
Datapath, MDP). In LEC 18.10-p100, when set_datapath_option -threads N is
applied, LEC only parallelizes MDP analysis.
For RTL side analysis, LEC has three datapath engines, Conformal DP (CDP, default
engine), wordlevel, and flow graph. Wordlevel and flow graph engines perform complex
datapath analysis, which can dominate overall runtime for datapath intensive designs.
Usage
To enable the feature, you can specify the following in either LEC or SETUP mode.
TCL_SETUP> set_datapath_option -enable_parallel_datapath_analysis
• analyze_datapath -threads
• set_datapath_option -threads
• set_parallel_option -threads
Parallelization in analyze_compare
This feature also enables parallel datapath analysis in Smart LEC analyze_compare.
The analyze_compare command analyzes characteristics of designs including
datapath type. Based on the characteristics, analyze_compare chooses the best
datapath engines that would be parallelized when user enables this feature.
Below are example dofile scripts using parallel datapath analysis in a Smart LEC run. It
can be used in either hierarchical or flat comparison.
The following are example dofile scripts using parallel datapath analysis in Classic LEC
runs. After reading the designs and libraries, this feature can be enabled in SETUP or
LEC mode before datapath analysis. It can be used in either hierarchical or flat
comparison.
When enabling the multithreaded datapath analysis, the following note will be shown
during the run if it is executed successfully:
Benchmark Results
In this experiment, we compared the default flow graph datapath analysis with its 8-
threaded parallelization counterpart on 900 regression testcases. The results showed
that the runs with parallel DP analysis reduced runtime up to 8X with 8 threads used.
Benchmark results show a 90% reduction in incremental memory consumption for each
additional worker. This feature allows a machine having twice the memory space
required by a serial run to accommodate up to eight workers.
This feature is available in Conformal LEC 19.10-p100 and requires Smart LEC license.
As a result, each worker has the same memory requirement as the main program and
works well when the workers are distributed to multiple machines.
However, running N workers on the localhost would use N+1 copies of design data on
the same host, leading to memory consumption issues for comparing large designs on a
single host.
The following chart shows the four-worker memory usages in version 18.10 on localhost
(go_hier_compare) versus a serial comparison (run_hier_compare). The parallelized
runs require from 3.1X to 5.6X memory of the serial run. For example, case 18 shows
that a serial run using 24 GB requires 123 GB for a four worker parallelized run.
You enable the shared memory feature, when all workers are specified as localhost by
specifying set_hier_compare_option ‑gohier_shared_memory.
If you specify other than localhost for the workers, Smart LEC will show the following
warning messages and will not enable the shared memory feature.
// Command: set_parallel_option -cluster LSF
// Command: set_parallel_option -batch_command \
// \"/farm/bin/bsub -q super -R 'OSNAME==Linux && SFIARCH==EM64T'\"
// Command: set_parallel_option -workers batch batch batch batch
// Command: set_hier_compare option -GOHIER_SHARED_MEMORY
The following chart highlights the advantage of the shared memory feature. The total
memory usage for a 4-worker shared memory run is only 1.8X of the serial run instead
of an average of 4.3X. On average, the shared memory feature reduces the memory
usages by 2X.
The following chart shows the memory usages with an increasing number of workers
from four to eight. The incremental memory requirements of increasing 4 workers to 8
workers ranges from 5% to 60%.
The following table shows the incremental memory usage for each worker. We compute
the incremental memory as:
The result shows that the incremental memory requirement with the addition of one
worker averages about 10%.
Support
Cadence Support Portal 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.