Key Point Mapping
Key Point Mapping
Conformal
Product Version: Conformal 16.1
August, 2016
Copyright Statement
© 2016 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 ........................................................................................................................... 5
Audience ......................................................................................................................... 7
Overview of Key Points ................................................................................................... 7
Fundamental steps in Mapping ..................................................................................... 10
Identification of key points ......................................................................................... 11
Determining the corresponding key point .................................................................. 12
Binding corresponding key points .............................................................................. 13
Understanding the Mapping Status ........................................................................... 17
Unreachable key points ............................................................................................. 19
Not-mapped key points .............................................................................................. 22
Extra key points ......................................................................................................... 23
Diagnosing Unmapped key points ............................................................................. 24
Manual mapping of key points ................................................................................... 29
Automated mapping of key points ............................................................................. 30
Reporting the method used for mapping ................................................................... 32
Rectifying incorrect mapping ..................................................................................... 33
Reusing Mapping Information .................................................................................... 35
Phase relationship between key points ......................................................................... 37
Indicating phase at the time of mapping .................................................................... 39
Auto-inferring phase relationship ............................................................................... 41
Invert phase relationship after mapping ..................................................................... 41
Enable phase mapping at submodule level ............................................................... 42
Facilitating Name-based mapping ................................................................................. 43
Scope of built-in naming rules ................................................................................... 44
Scope of “set naming style” ....................................................................................... 44
Scope of “set naming rule”......................................................................................... 47
Using pattern based naming rules ............................................................................. 48
Using dynamic arithmetic expression in naming rules ............................................... 50
Reporting available renaming rules ........................................................................... 51
Reviewing renamed key points .................................................................................. 52
Using renaming rules with manual mapping .............................................................. 53
Use of renaming rules in module uniquification ......................................................... 54
Mapping of multiple pins or bus to a single pin in Conformal ..................................... 55
Mapping multidimensional ports and registers in RTL ............................................... 57
Importing name-change information file from third-party synthesis tool ..................... 59
Impact of register naming style on imported optimization information: ...................... 62
Purpose
Conformal Equivalence Checker (also known as Conformal LEC) uses formal proof to
verify the functional equivalence of the combinational logic of a design.
To compare two designs, Conformal LEC partitions both, the reference as well as the
Revised version of the design in terms of combinational cones, bounded by non-
combinational design objects that are known - in Conformal lexicon - as “key points”.
After the identification of key points in the two designs, Conformal LEC determines the
corresponding key point pairs and compares the functional equivalence of the
combinational logic cones that drive these key point. The reference design is called the
“Golden design” and the alternate version of the design is called the “Revised design”.
The process of determining and pairing up the corresponding key points from the
Golden and the Revised design is termed as “Mapping”.
Conformal Equivalence checker flow can be broadly described in five steps as follows:
Constraints
Design & Library + Comparison
Modeling Mapping
Setup Modeling
options
Accurate and complete mapping of the key points are crucial for a reliable comparison
outcome. If mapping of the key points lacks accuracy, the comparison outcome will be
incorrect. If mapping of the corresponding key points is incomplete, the comparison
might report false non-equivalences.
This document aims at explaining the concept of mapping of the key points in detail, the
steps to facilitate and ensure accurate mapping, and also how to diagnose and resolve
the mapping issues. It also answers a lot of frequently asked questions related to
mapping.
Acronyms
Support Cone All the design logic feeds to a particular key point.
Audience
This application note is meant for logic designers and engineers who use LEC to verify
the functional equivalence between any of the following pairs in the same design, as it
matures from RTL to placed-and-routed netlist:
Readers are expected to be familiar with the basic synthesis optimization concepts.
The corresponding combinational fan-in logic cones of identical key points are
compared for equivalence. Two key points are declared equivalent when the
corresponding fanin cones are proved to be equivalent. If a key point contains more
than one fanin cone due to multiple input pins (for example, D-flop or D-latch),
Conformal will compare the corresponding fanin cones individually for each of these
input pins.
• Flop (DFF)
• Latch (DLAT)
• TIE-Z gates formed to represent a floating net or pin, and a high-impedance state
for tri-stated gates
Not all of these key points are compared. To qualify to be a valid candidate for
comparison, the key points should fulfill the following criteria:
1. One corresponding key point must be found in the other design for mapping.
Any key point that does not simultaneously fulfill these two conditions are kept out of
comparison.
Primary inputs, TIE-Z and TIE-E gates, can never become the sink point of any
combinational logic cone. Therefore, by Criterion 2, these key points are not compared.
1. Compare point
The sink point of combinational logic cones. It represents the end point of a
compare cone where data is captured. It must be a mapped key point. Unless it
is a mapped key point, it does not qualify to be a compare point.
2. Support point
The list of key points that appear in the transitive fanin cone of “compare point”
and define the structural boundary for the combinational cone driving the
compare point.
These represent the start point for the compare cone where data is launched.
The combinational logic gates that carry the data from the support points to the
compare point.
The complete fanin logic cone consisting of the combinational logic cloud and the
support key points, is known as the “support cone” of the “compare key point”.
The following figure illustrates the compare points and support points in a typical design,
assuming the Revised design also contains the same design objects with the same
name:
In Figure 2, the paths start at the “support point”, pass through some combinational
logic, and end at the “compare point”.
The following table lists the “support points” for each compare cone of a “compare
point”:
All these steps are performed when the tool switches from Setup to LEC mode, with the
application of the set system mode lec command.
You can use the report key point command to see the list of key points identified
in the Golden as well as in the Revised design, with the following syntax:
LEC> report key point -type BBOX PI E Z DFF DLAT CUT PO –revised
The following example shows a sample output of the command for the given types of
objects.
Note: LEC creates unique numerical ID, also known as “gate-ID” for every gate in the
design, including the key points. Therefore, a key point can be referred to through its
gate-ID in all commands that work on key points.
LEC applies sophisticated algorithms to automatically determine, for every key point in
the Golden design, the corresponding key point in the Revised design. However, LEC
also enables the user to manually map a pair of the key points from the respective
designs.
LEC considers two key points from the two designs as corresponding key points, only
when these satisfy the following condition:
The two key points must be the same type of object as clarified in the following table:
Type of key point in Golden design Allowed type for corresponding key point
PI PI
PO PO
BBOX BBOX
DLAT DLAT
DFF DFF
Z gate Z gate
E gate E gate
The following example shows a typical mapping summary table after issuing the
command:
The mapping is automatically enabled whenever the tool switches from SETUP to LEC
mode using the set system mode lec command.
The following example shows that mapping is invoked automatically, when entering
LEC mode:
However, you can disable automatic mapping when switching to LEC mode, by using
the -nomap option with the set system mode lec command. Then, you need to
explicitly use the map key points command later in LEC mode, to initiate mapping of
key points, as shown here:
To learn about one practical application of the -nomap option of set system mode
lec, refer to the Reusing Mapping Information section.
The mapping of the key points can also be scrutinized from the Mapping Manager GUI
of Conformal LEC.
To invoke the Mapping Manager window, click the Mapping Manager Icon at the top of
Conformal GUI.
The Mapping Manager pops up in a new window, with three separate panes for
Unmapped, Mapped, and Compare Points, respectively.
Note: The (?) symbol before the compared points indicate that these are yet to be
compared.
The process of mapping may require iterations or correction at times. Occasionally, the
synthesis tool might change the object names such that the default pattern matching
rules fail to determine the corresponding key point from the other design. The
unmapped key points require additional rounds of mapping, following the discovery of
the corresponding key point pair.
For iterative mapping, use the map key points command to pair the newly detected
corresponding key points.
• Unreachable
• Extra
• Not-mapped
Use the report mapped points command to report all the Mapped key points, after
mapping.
Use the report unmapped points command to report all the Unmapped key points,
after mapping.
You can filter the results further to view only a specific kind of Unmapped key point, by
adding the following options to report unmapped points.
Note:
• Merged sequential key points are shown under the representative key point, with
gate-id, phase, and merged register name, as shown in the following example:
Mapped Key
Unreachable
Key Points
Points Unmapped Key
Extra
Points
Not-mapped
A key point is declared Unreachable primarily due to one the following reasons:
1. The path starting from the key point is blocked by some other gate that masks or
disrupts its value propagation.
2. No fanout branch of the key point is structurally connected to any primary output.
There might be numerous situations that could give rise to such factors. Some of these
situations are discussed in the examples that follow.
Note: The Unreachable key points are not mapped by default. You can force their
mapping by using the set mapping method –unreach command. However, this will
increase the comparison time and can add to the list of false Non-equivalences.
Therefore, it is not recommended.
Example 1
In the following example, the flop output does not propagate to the primary output,
because of the ripple effect of the constant 0 through AND gate. Conformal LEC marks
the flop FF1 as an Unreachable key point (under the Unmapped key point group).
= Blocked path
Example 2
In the following example, flop FF2 becomes an Unreachable key point, because the
MUX in its fanout cone is constrained such that the path originating from the key point is
never selected.
= Blocked path
For example, clock-gate DLATs become Unreachable when modelled with the -
gated_clock modeling option.
Not-mapped key points might be the consequence of simple reasons, like the renaming
of design objects during synthesis. In such cases, the knowledge of name
transformation needs to be passed on to Conformal LEC, to help in the mapping. This is
discussed in the Facilitate Name-based mapping section.
Not-mapped flops or latches might also be the result of inadequate modeling options or
partial modeling or sequential redundancy. Some commonly applied sequential
optimization techniques include:
- optimizing away registers that are in “don’t care” state and are optimized to logic
0 or logic 1 by the synthesis tool
- removal of redundant registers that do not affect the design states anyway
Use the set flatten model command with appropriate options, to turn on modeling
of sequential elements. This helps to eliminate all Not-mapped sequential elements due
to inadequate modeling.
You can also use the set analyze option –auto command (or its equivalent the
analyze setup command) to mimic all the previous kinds of sequential optimizations.
Every modeling transforms the design and comes with a runtime cost. Complex
sequential optimizations might require higher efforts on the part of Conformal LEC. You
can increase the modeling effort with the -effort <effort level> option of the
set analyze option command (also the analyze setup command).
Yet, in some rare cases, the remodel –notmapped <modeling option> command
might be required to perform modeling of the remaining Not-mapped key points.
In this manner, the modeling options used can alter the count of Not-mapped key
points. Moreover, during comparison, LEC gathers more information about the Not-
mapped key points and might re-categorize these as Extra or Unreachable after
comparison.
Therefore, the Not-mapped information collected after comparison gives a more realistic
picture about the remaining Not-mapped key points.
In the absence of proper renaming guidance from the user, a Not-mapped key point
might remain unmapped and hence not-compared. As such, the comparison result will
be incomplete.
Not-mapped key points can also cause Non-equivalence to other key points, when
these become a support key point and influence the result of comparison.
A Not-mapped key point can be safely ignored, provided it has no corresponding key
point to map to and it does not cause Non-equivalence to other key points.
Primary Inputs and Primary Outputs that are present in only one of the designs, become
Extra key points. Like Not-mapped key points, these might also arise due to name
mismatches and user guidance in mapping might help to transform these into mapped
key points.
Post-routed netlist contains extra POWER and GROUND ports like VDD and VSS that
are not present in the RTL or synthesis netlist. Use the add pin constraints
command to constrain such Primary Inputs to a constant value.
Extra Primary Outputs like DFT ports can be ignored, because these serve no purpose
in the functional mode. Ports of this kind can be altogether ignored from the list of
Primary Outputs using the add ignored outputs command. These are excluded
from the list of Extra key points as well.
Extra unmapped Primary Inputs can cause Non-equivalence, if – as a support key point
- these affect the functionality of other compare key points. Use the add pin
constraints command to constrain such Primary Inputs to a constant value in
accordance with the design intent.
If you would like to force Conformal LEC to discount the effect of an Extra primary input
when it does not affect any internal logic, indicate these with the add ignored
inputs command.
If an Extra primary input does not affect the functionality of any compare key point,
these can also be safely ignored.
Redundant registers (DFF and DLAT) may be reported as Extra key points in some rare
situations.
Redundant registers do not affect the downstream logic and are removed by the
synthesis tool. The same registers become unmapped key points in the reference
design. Conformal LEC is able to detect redundant registers in the design at the time of
modeling itself and model these away appropriately, most of the time. However, in some
rare situations, Conformal LEC may not be able to determine if a Not-mapped flop or
latch is a functionally redundant register, until the design comparison happens. Before
comparison, these remain as Not-mapped key points. After comparison, LEC gets more
insight about such redundant registers and re-classifies these Extra key points.
To find more information on unmapped points in the design, use the rep unmapped
points command after mapping. Use the -extra, -notmapped, or -unreachable
option with this command to restrict the report to only Extra, Not-mapped, or
Unreachable key points respectively:
-blocked and -nofanout are two sub-options to -unreachable and enable further
filtering on the Unreachable key points based on the reason.
For example, the following command reports only those Unreachable key points that are
blocked by other logic gates:
Conformal will trace and print out the fanout paths of the Unreachable key point, up to
the point where it becomes unreachable.
For Extra key points, check if port renaming or explicit key point mapping is required to
map these to their corresponding key point in the other design.
If the extra primary inputs are constrained to constant logic values using the add pin
constraints command, these are no longer reported as “Extra” unmapped key
points.
If the extra Primary Outputs are of no use during functional mode, consider marking
these as ignorable key points using the add ignored outputs command.
For Not-mapped key points, check for the possibility of missed opportunity for mapping
or modeling. Object renaming or explicit key point mapping might be required for these
as well. If it is showing up due to lack of optimization, use the proper modeling options
from the set flatten model command, to optimize it away.
It is recommended to use the set analyze option –auto command (or its
equivalent command analyze setup) to enable the common set of modeling options.
To restrict the modeling to the Not-mapped key points only, use the remodel –
notmapped <modeling option> command.
The following example illustrates a circuit with functionally Unreachable flop "FF1_reg".:
Use the command to perform unreachability analysis on it. Note that the tool replaces
the unreachable net with the constant 0.
To test if a Not-mapped key point might be a sequential constant register, use the
analyze gate command. It will report the sequential constant status for the key point
and also detect if there is any sequential constant support key point in its transitive fanin
cone.
Figure 18: FF3_reg has the sequential constant flop in support cone
To manually map a pair of key points, use the “add mapped point” command as
follows:
This method is tedious and requires the user to manually discover the corresponding
key points from the two designs. LEC enables a more efficient and automated approach
to deal with all available key points.
• Named-based mapping
• Function-based mapping
The choice of mapping method is enabled by the set mapping method command.
On the other hand, function-based mapping algorithm uses heuristics to determine the
corresponding key point in the other design. Being based on heuristics, it runs slower
and it is also prone to error.
Conformal LEC enables the user to control and decide the kind of mapping method to
use. If the user wants to use both, in tandem, Conformal LEC enables the user to set
the priority between the two methods.
By default, LEC first maps the key points that have exactly the same paths, then maps
the remaining unresolved key points with a mapping algorithm. All remaining unresolved
key points become unmapped points.
To reverse the method of mapping, by first trying the function-based mapping algorithm
on key points and then applying name-based mapping on the remaining key points, use
the following setting:
For more information about how to use the set mapping method command to control
various aspects of the overall mapping strategy, refer to the Conformal Command
Reference manual.
Note:
• Primary Inputs and Primary Outputs are always mapped by name. This implies
that if the port names are changed the user is required to facilitate name-based
mapping for these ports.
• Tie-E gates are always mapped by function. This implies that the user does not
have any control over it to modify mapping of the E-gates.
===========================================================
Mapped points PI PO DFF Total
-----------------------------------------------------------
Golden 10 9 9 28
-----------------------------------------------------------
Revised 10 9 9 28
===========================================================
If the count of function-based mapping is high, it can have a detrimental effect on the
runtime. Study the key point names and see if some of these can be converted to
name-based mapping, using one of the strategies described in the Facilitating Name-
based mapping section.
To know about the strategy employed for a specific key point, use the command with
the key point gate-id or name, as shown in the following example:
To rectify the mapping of such key points, there are essentially two steps in the given
sequence:
If a few key points need correction, manually delete the mapping and then remap these:
However, if incorrect mapping affects a large number of key points, you can delete the
mapping of these key points using other options of delete mapped points that
select a group of key points.
After deleting the group of key points, start mapping for the unmapped key points afresh
with one of the mapping methods, to remap these.
set mapping method –name only To map based on name match only
Note: On dissolution of mapping of a key point, LEC removes the comparison results of
all the compared points associated with the deleted mapped points. You need to do a
fresh comparison of these compare points to reassess their equivalence status.
However, the mapping file may be written out with a more liberal setting for mapping
unreachable key points and so on, while at the time of reading, a more restrictive setting
for mapping can be chosen. The result of mapping will depend on the current run
session.
To write out the mapping information into a file, use the following command in LEC
mode:
To restore the mapping information from the file in subsequent LEC sessions, prevent
automatic mapping by the tool and use:
Because Conformal LEC, by default, maps the key points when entering the LEC mode,
you need to prevent this automatic mapping of key points by using the –nomap option
with the set system mode lec command:
You can also pass the mapping file with “set analyze
option” command with –mapping_file option as follows:
Caveat
set naming rule –register “<register name format>” can alter the
naming of flops and latches from their original RTL names and it may be difficult to
correlate these from the mapping file. To write out the mapping information in terms of
the original RTL name, add –SHOW_ORIG_RTL_NAMES to write the mapped points
command as follows:
In the following example, set naming rule changed the original RTL register names
from syndram/macreg/q[1:0] to syndram/macreg/q_x_reg[1:0].
When the -SHOW_ORIG_RTL_NAMES option is used, the mapping file will store the
register mapping as follows:
The default behavior of Conformal LEC is to assume that the corresponding key point
pair holds in-phase relationship.
If two “compare key points” are in inverted-phase, the comparison process needs to
check for inverted-equivalence rather than in-phase equivalence.
If two “support key points” are in inverted-phase, LEC assumes opposite Boolean
values for the key point pair, for comparison of “compare key points” driven by these
two “support key points”.
In case of flops and latches except for the clock cone, all of its data input cones
including asynchronous SET and RESET cones, must have inverted-phase relationship,
to be considered phase-inverted key points.
Asynchronous SET (or PRESET) pin is functionally always in the opposite phase of the
asynchronous RESET (or CLEAR) pin of a flop. Therefore, if the support cone of an
asynchronous SET pin of the Golden flop is swapped with the support cone of an
asynchronous RESET pin of the flop in the Revised netlist, these asynchronous pins
exhibit inverted-phase relationship. If other data cones other than the clock, also exhibit
inverted phase relationship, this flop will be mapped as phase-inverted key points.
Primary Inputs and Primary Outputs are considered to be in-phase, and Primary
Outputs are checked for in-phase equivalence only.
For black boxes, support cone of all the input pins must be in an inverted-phase
relationship for the black box instances to be mapped as phase-inverted key points.
In the following example, flop FF1 has an inverted-phase relationship, while primary
inputs D, CK, SN, and primary output Y are in the same phase.
To include the phase relationship information during mapping, use one of the following
methods:
The following example indicates phase mapping for register FF1_reg, at the time of
mapping of the key points, in the Figures 19 and 20:
Note that automatic mapping by the tool was inhibited by the -nomap option of set
system mode lec.
Mapping Manager GUI will display the mapped key points in the following manner.
Note that the "-" sign in front of the key points indicate inverted phase relationship, and
the “+” sign indicates same phase relationship.
In this example, the same fanin cone is swapped for the asynchronous SET/RESET pin
between the two designs, thus fulfilling the inverse phase condition for the
asynchronous control pin.
Post-comparison report in Conformal LEC will show the primary output Q and FF1_reg
as inverted-equivalent, while primary output Y will be in-phase equivalent. The
comparison result pane in Mapping Manager GUI represents inverted-equivalence with
"-" sign in front of the compared key points, as follows:
Therefore, you can limit this phase mapping command only to the Non-equivalent key
points as follows:
Caveats
• If the inverter has moved beyond one register level in a register chain, it might
require the use of set mapping method –phase from the very beginning.
Using phase-mapping on Non-equivalent key points only, may not be able to
map these with the correct phase.
In the following example, the phase of the flop FF1_reg was changed to phase-inverted
mapping with the invert mapped points command:
Golden Revised
+ 6 DFF /FF1_reg + 6 DFF /FF1_reg
Only mapped key points are considered by this command. Unmapped key points will not
be affected by this command.
In certain situations, the synthesis tool use libcells for registers with inverters before and
after the state elements, in such cases also you can enable the phase mapping only on
these cells and improve the runtime performance of LEC.
Caveat
With the -phasemodel option, LEC applies inversion to all sequential elements within
the module without any further analysis. Therefore, use it only when every sequential
element in that module undergoes inversion push or boundary optimization. This option
is more suitable for library cells with inverted input and output pins.
Conformal LEC, by default, attempts to map all the key points with matching
pathnames. Depending on the degree of variation in the name change, LEC provides
different methods to help name-based mapping.
The scope of each of these commands is described in the following sections, except for
the last one.
Scope of built-in naming rules: LEC built-in naming rules equate the naming
conventions for the following objects:
This is controlled by the the analysis effort level used with set mapping method –
name_effort <low|medium|high>. By default, it is configured to -name_effort
high.
No extra input is required from the user to map the key points whose names differ by
one of these criteria.
For example, the flops names get mapped automatically without any additional user
inputs, though the array delimiter is different (square-bracket in Golden design and
under-score in the Revised design).
• Rename register type variable name if the generated name has introduced a
name collision issue. Different tools, such as RC and DC, have their own
renaming rule.
With the set naming style command, LEC will generate variable, instance, and
register names similar to Genus (Cadence Synthesis tool) or Design Compiler (third-
party synthesis tool) making mapping easier.
If you are working with a third party tool for synthesis, use:
Example
ff1[s1][s][0],
ff1[s1][f][1],
etc.
With set naming style DC, the register names will be generated as:
ff1_reg[11],
ff1_reg[10],
etc.
This command has to be specified before the read design and read library
commands.
The set naming rule command will impact the following naming conventions:
• Array delimiter
• Field delimiter for VHDL record and SystemVerilog struct type
• SystemVerilog interface delimiter
• Hierarchical separator
• Register naming
• Parameter
• Instance naming (simple and generate-loop instance names)
• Tristate instances
• Inverted Pin Extension
For example, if the register instance name in Golden Verilog was a/b/data[3:0], and
the synthesis tool generated four register names as a.b.data_3, a.b.data_2,
a.b.data_1, and a.b.data_0, the hierarchy separator, array delimiter, and register
name will be modified by the synthesis tool.
To generate register names in the same fashion in LEC, use the following naming rules
to construct register instance names in the same manner in Conformal LEC:
Note:
• Can be used in SETUP mode as well as LEC mode, enabling iterative mapping
of the Not-mapped key points
• If changes are to be applied in Golden design, use the –golden option, else
choose –revised.
• The search string and the replace string are represented as a Perl
regular expression.
• The rules are applied on all the Not-mapped key points. If there are multiple
rules, these are applied in the order declared.
• Renaming rules can be specified for key points, modules, and pin renaming of
blackboxes. To learn more about module renaming and pin renaming for
blackboxes, refer to the Handling Black Box During Formal Verification
application note.
• For a list of <other options> and detailed explanation of this command, refer
to the Conformal Command Reference Manual.
• Do not mix the set mapping method –noname command with the add
renaming rule command. It will disable the renaming rules.
For example, if the register names of every bit of a bus is named as follows (changes
are highlighted in yellow), it involves a lot more changes than can be handled by the
commands described so far.
syndrm/macreg_1/q_reg[ syndrm/macreg_03/q_reg(7)/g2/
7] i0
Name-based mapping will not be able to map these instances automatically, initially
leaving these Not-mapped in the “Unmapped Points” section of Mapping Manager
UI.
Figure 24: Not-mapped key point list dislayed in Mapping Manager window
For the previous case, two renaming rules will be required for mapping:
After use of the renaming rules, the registers will be shown in the “Mapped Points”
section of the Mapping Manager UI:
Take care of the order in which the rules are defined. An incorrect order may result in
unwanted name changes. If there are multiple rules in the script, these will be applied
serially one by one, so the second rule will be applied to the output string of the first
rule.
Note: Additionally, mapping of blackbox instances involve adjusting module and pin
names, if they differ. One typical example is replacing a RAM memory cell in the Golden
design, with a cell from a different library in the Revised design, where both the module
and pin names might differ.
To learn more about mapping intricacies of blackboxes, read the Handling Black Box
During Formal Verification application note from the Cadence Online Support.
syndrm/macreg_1/q_reg[7:0 syndrm/macreg_1/q_reg[0:7
] ]
During the modeling of key points, LEC analyzes the renaming rules and tabulates how
may key points were mapped by each renaming rule, as shown in the following
example:
...
The first result shows the original instance names and the second result shows the
modified names, after applying the renaming rules.
Note:
• This option can be applied for instance mapping only, and cannot be used for pin
or module renaming.
• -noinvert and –golden are default options, hence can be omitted.
After a successful mapping, the mapped key points are displayed with the gate-id and
phase information.
For example, to map a set of Not-mapped registers y_reg[3:0] of the Golden design
with the corresponding registers flop_reg[3:0] in the Revised design, use add
mapped points with renaming rules as follows:
However, the instance path names in the Golden as well as the Revised design need to
match for uniquify to take effect. Therefore, the non-matching hierarchical instance
names need to be first matched through renaming rules before attempting uniquification
of their module names. At the same time, consideration of the instance renaming rules
need to be enabled through the -use_renaming_rules option of the uniquify
command.
For example, Conformal will not be able to run the uniquify command for the
following instance pairs, because the instance path names are different:
/a/b1/c1/d[0] a1/b1.c1/d0
/a/b1/c1/d[1] a1/b1.c1/d1
/a/b1/c1/d[2] a1/b1.c1/d2
/a/b1/c1/d[3] a1/b1.c1/d3
Please refer to the Conformal Command Reference Manual for a detailed explanation
on the usage of the uniquify command.
LEC will map the Golden primary input with the representative input pin in the Revised
design. Unless the duplicate pins are linked in this manner, these will appear as Not-
mapped key points and cause false non-equivalence.
To declare a set of primary inputs as duplicates, use the add pin equivalence
command with the following syntax:
Use the report pin equivalence command to check the pin association.
In the following example, during clock-tree synthesis (CTS), the implementation tool
created one extra primary input CLK_INV for the inverted clock. To declare it as an
inverted equivalent pin of the original clock input, CLK, use the following command:
Now, LEC will map the CLK pin from both the designs, using name-based mapping.
In some scenarios, the implementation tool can create multiple duplicate pins as a bus.
To map the bits of such a bus, use a wildcard for all bits or specify every bit individually
as duplicate members.
For example, if the primary input inputA in the Golden design is cloned as a bus
inputA[3:0] in the Revised design, use the following command to map the bus:
However, at times, this command may not be sufficient. You may also need additional
naming rules to match the following:
In some cases, renaming rules might be useful to specify the name correlation.
...
input mydata_t DATA;
On the other hand, the Revised netlist represents the same bus as a single-bit vector as
follows:
By default LEC expands the SystemVerilog multidimensional port into individual bits as
follows:
DATA[bus][harv][d][0][0]
DATA[bus][harv][d][0][1]
...
DATA[bus][harv][d][0][63]
DATA[bus][harv][d][1][0]
DATA[bus][harv][d][1][1]
...
DATA[bus][harv][d][1][63]
Use the set naming rule –mdportflatten -golden command to flatten the
multidimensional array into a single-dimensional array and map these.
However, third-party synthesis tools always, by default, flatten multiple dimensions into a
single dimension when the data type involves the SystemVerilog, union.
In the previous example, it will flatten the port as 128 bit scalars as follows, flattening
the union inside the struct:
DATA[bus][127]
DATA [bus][126]
DATA [bus][125]
...
DATA [bus][0]
Therefore, if it is a third-party netlist, only use the following command, to match the
naming style. You may require to add some renaming rules to fine-tune the mapping.
Similarly, Cadence Synthesis Tool RTL Compiler (RC), by default, preserves complex
port structures and expands it in the same manner as LEC. Therefore, the following would
suffice to complete the mapping:
If the default bus delimiter was further changed in the synthesis tool, consider applying
the following commands to match these:
If the multi-dimensional port is a blackbox pin, you can use a renaming rule as shown in
the following example. Note that the renaming rules may contain equations.
The key to making the right choice of commands lies in understanding how the ports were
transformed in the Revised netlist and applying the command that will help change the
structure in the RTL accordingly.
If a history of the name changes made in design ports and nets on instance names
during synthesis is recorded in the third-party synthesis tool, you can straightaway
import the information in LEC, using the change name command, with the following
syntax:
If this file meets the format expected by LEC, it can be used to perform all the name
changes required to correctly map all the key points in one go.
Genus with Legacy UI and DC generate the name-change file in a format supported by
LEC. With this command, LEC is able change the names in a post synthesis netlist back
to their original, pre-synthesis forms.
For example:
The first name change is recorded in file1, the second in file2, and the third in file3.
So, to convert the name port_0_0 back to the original name port[0]_input[0],
you need to read the change name files in the following order:
To import name-change information from a VSDC file, use the read setup command
with the -apply_name_change option as follows:
LEC uses different techniques to correctly map single-bit registers to the corresponding
multibit cells in the other design.
To learn more about mapping methodologies for mapping and verification of multibit
register cells, refer to the Verification of Multibit Cells application note.
The report setup information –usage command displays how much of the
imported information is actually utilized in modeling the design.
===========================================================
Used Unused Rejected Ignored
-----------------------------------------------------------
seq_const_0 4657 0 0 64
seq_const_1 16 0 0 0
seq_duplication 449 0 0 0
cell_name_change 1456 6057 0 0
port_name_change 3524 799 0 0
===========================================================
If all register optimization information (like declining and optimization to logic 0/1) crowd
under the Unused column, you need to check if the register names between imported
data and LEC are dissimilar. Use set naming rule –register or use add
renaming rules, to equate the register naming style.
For example, the imported data might have _foo_reg added as a suffix to all the
register names. This does not match with the default register naming style of LEC,
which adds _reg as a suffix to the register names. The mismatch in register names will
lead to skipping of the imported information.
To resolve this mismatch, use the set naming rule as follows, before reading the Golden
design:
If -noauto_modeling is selected, the tool will model away the sequential constant
registers as logic constants and then map the remaining key points. This is likely to
result in less number of mapped points.
• You do not need to worry about the design hierarchy when defining renaming
rules with the add renaming rules command. It is sufficient to declare these
based on the patterns that require alteration. LEC will try to match these for all
the key points of the hierarchical modules under comparison.
• If some nets are preserved during synthesis and you want to compare the cones
of the net, declare CUT gates on the preserved net without bothering about its
hierarchy, as follows:
For example, when it is comparing the adder4 module, LEC will convert the
CUT gate specification on the net enable_add, as shown here, with a clear
message about importing the constraint:
Recommendation
Phase mapping should be used with caution. If phase inverted key points exist in
the design, then you can use methods explained in the sections:
Recommendation
To check how many key points are mapped by function-based mapping, use the
set mapping method –method –summary command.
Recommendation
4. Mapping a file written out by the write mapped points” command, contains
one-to-one mapping commands in terms of the add mapped points
command. Conformal executes the add mapped points command in isolation
one by one and immediately maps it. Every execution of the add mapped
points command incur some CPU cycles.
If the mapping file contains a very large of mapping commands, importing the
data might consume much more time than using the pattern-based renaming
rules that work on key points in one go.
Latch-based isolation cells inserted by Conformal will get mapped by function and runs
a minute risk of getting mapped to an incorrect latch in the Golden design. In such
cases, use manual mapping to correct it. Refer to the Rectifying incorrect mapping
section to learn the techniques to fix incorrect mapping.
If the hierarchical module name and instance names do not match, there is a possibility
of mis-correlation that can affect the Not-mapped key point count and cause false Non-
equivalence.
If the patch module name is different between the Golden and the Revised design, use
add renaming rule with the -module option or use the unquify –all –nolib
-golden command to level out these differences. If the key point names are
transformed beyond recognition, use add renaming rules to help map instances
correctly and prevent against false Not-mapped key points.
References
Conformal Equivalence Checker Command Reference Manual