Ceco 2023
Ceco 2023
Kenneth Chen
Course Agenda
Introduction to Conformal ECO
Conformal ECO Flows
Configuring and Reporting Rule-Based ECO Setup Checks
Conformal ECO basic commands (PRE/POST-Mask)
Streamlined Setup for ECO Patch Validation
Hier-FEF Flow -Block level Flattened ECO
NEQ Module Analysis in RTL for Hier-FEF flow
ECO Cut Point Flow (ECP)
Sequential Change
Equivalent Signal Analysis for manual ECO
ECO Variations
3 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Nomenclature
Engineering Change Order (ECO) is the process of making local changes
to the design netlist without rerunning the entire synthesis and place and
route (P&R) flow.
ECO Types
Functional ECO
Changes the functionality of the design
ECO Stages
Premask (pre-tapeout) ECO
Uses normal logic gates to implement change
RTL-GDS
rRTL Metal
encode b
u video IP
Yes = J
s
transport de-
No = $$$$
IP code
Genus
Innovus
Where do I
make the Will this ECO
change? meet timing, is
Impact? it DRC clean?
Innovus
Back-end ECO
Test Insertion
EDIS
P&R
Pre-mask ECO
ECO placement & routing
Post-mask ECO
New Netlist Old Netlist DEF GA/SG incr. opt & eco
(G2) (G1) (G1) routing
9 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
CECO Flow
Conformal ECO provides three main ECO flows :
Flattened ECO Flow (FEF )
Hierarchical ECO Flow
Hierarchical Flattened ECO Flow (Hier-FEF)
o1
o2
Conformal ECO
o3 o1
o2’
o3
O1
ECO
generation.
Note: Result should match with R1-vs-R2 comparison
© 2023 Cadence Design Systems, Inc. All rights reserved,. 13
Functional ECO Flow: Step 2A
Pre-mask ECO
ECO
Tech Mapping & Optimization Tech
Library
– Optimize ECO logics Patch
Patch
Equivalence
SOCE
Check Post-mask
P&R
Array
Conformal ECO SDC
Analyze
DEF is used to derive ECO QRC
SPEF
– Instances of GA filler cells
Patch
Patch
– Physical location of GA filler cells LEF
Switch between menu and command modes: set gui [on | off]
Batch mode
lecq { -m job1g_128 } -eco -dofile <batch_file> -nogui
dofile <batch_file>
Closing
exit [-force]
Conformal automatically closes all windows upon exit.
-FLAT : Specifies that the intention is to run the Flattened ECO flow.
Enable the following :
SET FLATTEN MODEL -ECO
SET FLATTEN MODEL -ENABLE_ANALYZE_HIER_COMPARE
-CONstraints
-NOEXact_pin_match
-FUNCTION_Pin_mapping
-INPUT_OUTPUT_Pin_equivalence
-THRESHOLD 0
-CONstraints
-NOEXact_pin_match
-FUNCTION_Pin_mapping
-INPUT_OUTPUT_Pin_equivalence
-BALANCED_EXTRACTIONS
TOP TOP
U3 U4 U3 U4
U1 U2 B U1 U2 A B
TOP TOP
U3 U4 U3 U4
U1 U2 B U1 U2 A B
© 2023 Cadence Design Systems, Inc. All rights reserved,. 24
Uniquify netlist
Top Top
<golden> <revised>
design :
Block_0 Block_1 Test_1
26 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Conformal ECO Checks
Start the version 19.10.
Flagging potential issues and suggesting possible resolutions early in
the ECO process
The checks are performed automatically after the following commands
executing
LEC>compare
…..
//Warning: (ECO2.3) The scan enable pin(s) of non-
equivalent DFF(s) is not constrained to functional mode in
Golden. (occurrence 1)
32 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Flattened ECO Flow (Recommended Flow)
In the flattened ECO flow, you run a Original Netlist Modified Netlist
flat compare on a hierarchical (G1) (G2)
design.
Advantages. Flat Compare Analyze Hierarchy
one command.
Conformal ECO
Compare eco hierarchy
Guidance
Command
Netlist with ECO File
(G3)
<Note>. The commands and options in green would be used in the Post-
mask ECO.
report mismatch pin > misPIN.do Find the top ECO pin
dofile misPIN.do
42 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Flatten ECO dofile
set log file logfile.$LEC_VERSION –replace
read design –file G1.v -verilog –golden
read design -file G2.v -verilog –revised
add pin constraint 0 scan_en –gold // Scan chain control
set flatten model –gated_clock // Gated clock control
set eco option -flat
set system mode lec
analyze hier –eco_aware
add compare point –all
compare
compare eco hier
analyze eco patch.v -replace –hier –ecopin ecopin.do
set system mode setup
dofile ecopoin.do
apply patch -auto
optimize patch -workdir rc_work -library typical_scan.lib \
-synexec "genus -legacy_ui“ -sdc core.sdc -verbose
write eco design -newfile %s.cfmECO -replace
report eco change
© 2023 Cadence Design Systems, Inc. All rights reserved,. 43
When ECO need to add new pins
Automatic method :
ROOT used only :
SETUP> REPort MIsmatched Pin > rootECO_PIN.do
SETUP> dofile rootECO_PIN.do
top
report mismatched pin
in0 ctr01
in0
in1 ECO in1 ECO
in2
in2
analyze eco
NOTE
Always review ECO pin matching ECO version
If the Golden module has extra ports, use this command to delete the pins
to match the Revised module.
Use this command in the LEC mode and after “analyze hier” and
“compare”
Compare eco hier takes the flattened compare results, along with the
boundary information from ANALYZE HIER and breaks down the
nonequivalent points to their associated submodules
NEQ
U3 U3
U2 U2
U1 U1
===========================================================
o1 o1
o2 O2’
o3 o3
EQ O1’
• Compare Designs
NEQ O2’ • Analyze ECO patch : G2-G1 = ΔG
• Apply patch : G2 = G1+ΔG
EQ O3’
A B A B
Old Gate (G1) : Old Gate (G2) :
53
Analyzing the ECO Change
ANAlyze Eco <patch_filename>
[-REPlace | APPend]
[-EFFort <HIGH | MEDIUM | ULTRA >]
[-PRESERVE_clock | -NOADD_ICG]
[ -THREADS <integer> [,<integer>] ]
[-ECOPIN_dofile <file name>]
(LEC Mode)
// Command: compare
================================================================
Compared points PO DFF Total
------------------------------------------------------------------------
Equivalent 38 100 138
------------------------------------------------------------------------
Non-equivalent 0 2 2
================================================================
// Warning: There are extra POs in Golden
………………………………………………………………………………………………………………………….
// Command: analyze eco patch.v -rep
// Grouping
// Note: 1 group(s) added
// Note: 0 library cell(s) is in the patch
// Note: 17 primitive(s) are in the patch
Note: Only the logic cone under nonequivalent points are analyzed by the
command.
© 2023 Cadence Design Systems, Inc. All rights reserved,. 54
ANALYZE ECO
ANAlyze ECo –effort ultra
This will skip expensive grouping and boolean analysis and spend
time on patch size
To skip certain nonequivalent points, do not add them to the compare list.
Golden Revised
U1 U1
U2
U2
A A X
D Q
DFF Q
EN D DFF
CKO
CK EN
ICG CK
CKO
// Warning: 2 DFF clock(s) are changed in the patch CK
G1 G2
DFF2 DFF2
EN
CKO CK
CK
DFF2
EN
// Command: ana eco patch.v -rep -preserve_clock CKO
CK
// Note: 0 library cell(s) is in the patch
// Note: 30 primitive(s) are in the patch ICG
DFF1
DFF2 DFF2
EN1 EN2
CKO
CK CKO D2_in DFF1
CK
ICG New ICG CK
DFF1 EN2
DFF1
EN1
CKO D1_in
CK
DFF1
ICG EN1
CKO
CK
ICG
G1.v G3.v
D
si DFF1 DFF2 DFF3 so
D
si DFF1 DFF2
SI
DFF3 so
apply patch
Keep both scan and data logic
(DFFs on scan chain will not be freed)
ECO
G2.v 1’b0/1
G3.v
D
si DFF1 DFF2 DFF3 so
si DFF1 DFF3 so
SI SO SI SO
SI Q SI Q SI Q SI Q SI Q
CK CK CK CK X SI Q X CK
DFF2
SI SO
SI Q SI Q Apply patch –freescan –stitchscan
CK X SI Q X CK –shiftenable scan_se 1
DFF1 DFF3
CK
DFF is freed
DFF2 Scan chain is stiched
Shifter register
Shared function & scan path
Example
// Command: report_eco_scan_input -file g1_scan_input.lst
/ Info: total 2 scan input(s) are collected
Library Requirements
Example
Example
SETUP> set eco icg_testenable -port TEST_EN -module_inst /m1/m2
SETUP> set eco icg_testenable -driver_pin Dff/Q -module_inst /m3/m4
LEC> analyze eco -connect_icg_testenable manual
<Note> The specified signal must be a G1 signal or the command will error
out.
No TE Driver is Found,
connected to constant
as default.
Example
add_pin_constraint 0 TE -both
set_system_mode lec
report_eco_testenable_input -file g1.testenable.rpt -golden
report_eco_testenable_input -file g2.testenable.rpt -revised
Example:
Line1: No difference. The test enable connections of ICG0 are the same.
Line2: The test enable connection of ICG1 has changed to TE2 in G3.
Line3: ICG2 is removed in G3.
Line4: ICGN is a newly added ICG in G3.
80 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Patch Technology Map Process
–SYNExec /site/mtktools/Genus/2x.xx/tools.lnx86/bin/genus
........
Sourcing '../presyn.tcl' (Thu Feb 24 20:30:24 -0700 2022)...
Setting attribute of root '/': 'unmap_scan_flops' = false
Setting attribute of design 'cfm_eco_patch_1': 'dft_scan_map_mode' = preserve
Info : Mapping. [SYNTH-4]
: Mapping 'cfm_eco_patch_1' using 'high' effort.
ECO.v
INVCKHHD eco_XXX_ctrl_rst_dd_inv(.O(rst_dd_inv), .I(Net13542));
OAI13BHD eco_inst_1(.O(XYZ_nxt_8_), .A1(eco_net_10), .B1(eco_net_14), .B2(
eco_net_13), .B3(abc34));
AO222CHD eco_inst_2(.O(XYZ_nxt_1_), .A1(eco_net_15), .A2(eco_net_12), .B1(
eco_net_23), .B2(eco_net_16), .C1(n663), .C2(N123));
G1 G2 G3
U1 U1 U1
E U2 REG1 REG1
Do not flatten (keep the hierarchy) of patches smaller than 10k gates
presyn.tcl
Optimize patch
1’b1 TIEL
remove_assign.tcl
seqOPT.tcl
97 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Reporting ECO Changes
Example change_script.tcl
Example
# ===============================================
is
# MODULE chip truncated.
# ===============================================
set_root_module chip
# DISCONNECT PINS : 230
disconnect_pin {icd_core/mc_top/u5/p4379A/A2} ;# net:icd_core/mc_top/u5/state[59] , dir:in
# DEL INSTANCES : 212
delete_instance {icd_core/dbg_top/p29680A} ;# OAI22D0
# ADD INSTANCE : 1
add_instance {chip_eco} {chip_eco}
# ADD NET : 27
add_net {icd_core/mc_top/u5/state[59]_1}
Notes:
1. ECO netlist filename will have a format of <G1name>.G3.
2. Stored in the same location as G1 netlist if no “DIR” option
103 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Postmask Manual ECO Process
A postmask manual ECO process,
Requires designers to
Check availability of different kinds of spare cells
Map to optimal spare cells
Check whether the ECO created a timing or DRV problem
Placed design
*
Spare gate
*
*
Unmapped gate
Automatic physical remapping from unmapped gates to spare gates and freed cells
Accurate timing that is placement-aware
Automatic!
Unmapped gate
Adds the spare cells or freed cells as the available cells for the
OPTIMIZE PATCH command in the post-mask flow.
Need to be applied before “optimize patch”
OPTimize PAtch
… -USESPARE: Enables spare gate mapping and/or
[-USESPARE] gate array mapping
[-MAPscript <output file>] -MAPscript <filename>: Writes out the location-
aware spare gate mapping result in the form of an
|-SPEF <input file>] SoC Encounter TCL script. This option should be
[-DEF <input file> ] used with the -DEF option.
[-LEF <input file> ]
--------------------------------------------------------------------------------
spare_1/s_gate9 SPARE g80 U1/U22/FM_CTRL_eco
spare_1/s_gate1 SPARE NOT_USED NOT_USED
spare_1/s_gate22 SPARE NOT_USED NOT_USED
spare_1/s_gate15 SPARE g85 U1/U22/FM_CTRL_eco
spare_1/s_gate18 SPARE g100 U1/U30/PWR_CTRL_eco
ECO-INFO: Total ECO Violations - 0
ECO-INFO: SYNTHESIS PASSED WITH NO VIOLATIONS
OPTimize PAtch
…
[-USESPARE]
[-MAPscript <output file>]
|-SPEF <input file> ]
[-DEF <input file> ]
[-LEF <input file> ]
[-GAlibcell <cellname*> ]
<For Genus>
Load Configuration
Read G3 netlist
SOC ENCOUNTER
ecoDefIn
ecoRoute
ECO gates (G3) Spare Gates Signoff
File “SGmapping.tcl”:
#######Spare Gate Mapping file Generated by Conformal ECO Designer############
ecoSwapSpareCell pixel_generator/vtgen/ver_gen/ECO2inst_1 spare_10/spr_gate025
ecoSwapSpareCell pixel_generator/vtgen/ver_gen/ECO2inst_2 spare_10/spr_gate021
ecoSwapSpareCell pixel_generator/vtgen/ver_gen/ECO2inst_3 spare_10/spr_gate023
Load Configuration
Read G3 netlist
SOC ENCOUNTER
ecoDefIn
ecoRoute
ECO gates (G3) Gate Array Signoff
File “GAmapping.tcl”:
#######Gate Array Mapping file Generated by Conformal ECO Designer############
addInst -cell GOR2D2BWPLVT -inst pixel_generator/vtgen/ver_gen/ECO2inst_1 -loc 18.620 87.500 -ori R0
addInst -cell GND2D1BWPLVT -inst pixel_generator/vtgen/ver_gen/ECO2inst_2 -loc 12.320 84.980 -ori R0
addInst -cell GND2D1BWPLVT -inst pixel_generator/vtgen/ver_gen/ECO2inst_3 -loc 15.820 84.980 -ori R0
addInst -cell GND2D1BWPLVT -inst pixel_generator/vtgen/ver_gen/ECO2inst_4 -loc 16.520 79.940 -ori R0
© 2023 Cadence Design Systems, Inc. All rights reserved,. 118
Streamlined Setup for ECO Patch Validation
119 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
ECO netlist is NEQ ??
Try to Do the 2nd ECO.
Check if missing pin constraints or need “analyze setup” command
False NEQs : Design Constraints missing
Example:
add primary input ……
uniquify (CFM)
apply patch (CECO)
1. Setup, collect and save the before-ECO design information and ECO
changes in G1-G2 stage
G1
Compare ECO G3
G2
Verification
Information
Run at the beginning of patch generation stage to capture all the verification
information.
write_verification_information <verification_information_directory>
Save the verification information to the specified directory.
Run at the very last step of patch generation stage, after “optimize patch”
...
// Command: set_verification_information ceco_uvi
// Verification information is set to ceco_uvi.
...
...
// Command: optimize_patch
...
// Note: Collect 185 mapping information(s) in the patch to verification information.
// Note: Collect 86 merge flop(s) in the patch to verification information.
...
// Command: write_verification_information ceco_uvi
// Verification information is written to ceco_uvi.
...
G3
Compare
G2 Ensures
successful
validation
Verification
Information
130 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Flatten ECO
Example :
tclmode
foreach module $eco_blocks {
if { [file exists ${module}.ecopins.do ] } { dofile ${module}.ecopins.do}}
vpxmode
142 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
RTL NEQ Module Analysis Flow
In the Hier-FEF , the user needs to provide a list of ECO modules. This
NEQ module list can be obtained by comparing the original RTL (R1)
and the ECOed RTL (R2).
In the RTL NEQ module flow, we do not run the ”analyze eco” command.
set_eco_option -r2r_eco_module_analysis
Enable:
read design R1.v -golden set x conversion dc –both
set mapping method –name first
read design R2.v -rev –sensitive
set system mode lec set flatten model
–eco
analyze hier_compare –eco_aware
–enable_analyze_hier_compare
add compared points -all
compare
compare eco hierarchy
report eco hierarchy
report eco hierarchy > NEQ_modules.rpt
144 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Why need cut point ?
The ECO is quite far away from the NEQ points. If cut points are inserted to the operands
The complex logic and timing optimization in the of the arithmetic operation in the gate-
synthesis stage increase the complexity of the level netlist, then Conformal ECO has
ECO problem.
then CECO patch could be larger than expected..
larger chances to generate a small patch.
147
© 2023 Cadence Design Systems, Inc. All rights reserved,.
Step 1: Create R1R2 Database to store Cut
Point Candidates
Analyze RTL1-RTL2 for the significant signals inside the fanin cone of
the NEQ key points. The RTL-diff are shown in the output db file.
## Design
read design r1.v .....
read design r2.v -revised
set system mode lec
add compare point
compare
analyze eco –create_db R1R2 r1r2.db -replace
FILE r1r2.db
.r1 eq_pre_vol // RTL1 module name
.r2 eq_pre_vol // RTL2 module name
.net data_in[8] U$1/U$9 U$1/U$9
.net tmp[8] U$4/U$49 U$4/U$41
.net U$4/U$54 U$4/U$54 U$4/U$42
.net n17_5 U$5 U$5
.net tmp__3dB[8] add_47/SUM[8] add_47/SUM[8]
...
...
.end
FILE r1g1.db
.r1g1 eq_pre_vol // G1 module name
.gate - n17_5 U90/g1
.gate + n17_5 reg_eq_pre_vol[2]
.gate + n43[17] U56/g1
.gate - n43[17] U15/g2
.gate - n43[19] U80/g1
.gate + n43[19] U114/g2
...
.end
FILE r2g2.db
.r2g2 eq_pre_vol // G2 module name
.gate + n17_5 U115/g1
.gate + n17_5 U116/g1
.gate - add_43/B[20] U166/g1
.gate + add_43/B[20] U143/g2
.gate - n17_4 U90/g1
...
...
.end
©153
2023 Cadence Design Systems, Inc. All rights reserved,.
Patch Size Improvement with Automatic Cut Insertion
The automatic cut insertion would insert cut-points before ECO analysis
to limit the ECO search space and improve the patch size.
With automatic cut insertion, CECO adds cuts in the fan-in cone of the
NEQ keypoints. The added cuts focus on reducing NEQ keypoints.
156 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Sequential Changes
Clock
Clock tree
Conformal ECO pick up one of clock leaf for new sequential cells
clk clk
clk ECO_DFF ECO_DFF
clk_1 clk_1
DFF DFF DFF
S
ECO
A D Q C D Q C
A
ECO
R
B
G1 G2
Way 1: Way 2:
• Add a new DFF (A-set ) • Set DFFs as Inverted mapping
• ECO cone A • ECO cone A
• Connect cone B to S • Add one inverter at Q
• Connect cone C to Q
RST
S
IN D Q OUT
Golden U1_reg
CLK
R
S
IN D Q OUT
Revised U1_reg
CLK
R
RST
Example :
LEC>compare
// Warning: (ECO2.8) The non-equivalent DFF(s) in Golden uses a different
asynchronous/synchronous set/reset DFF cell than the Revised.
Remain as multibit.
G1 A_reg_1_0_ G2 A_reg_1_
G3 A_reg_1_0_
EQ
A_reg_0_
EQ
G1 G2 G3
MB[7:6] [7] MB[7:6]
MB[6:5]
[5] [5]
[4] [4] [4]
MB[3:2] [3] MB[3:2]
MB[2:1]
[1] [1]
[0] [0] [0]
G1 G2 G3
A_reg_1_0_ A_reg_1_
EQ R
A_reg_1_ R
Local_rst
R Local_rst
NEQ A_reg_0_ R
A_reg_0_
R R
global_rst
Local_rst global_rst
G3
R
A_reg_1_0_
Local_rst
Keep the original MB cell :
R
A_reg_0_
SET ECo Option -PRESERVE_MULTIbit_flop
global_rst
set_eco_option -feedthrough_preserve
(SETUP mode)
166 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
Find the corresponding nets
Take a Golden net name and finds the corresponding
equivalent nets and signals in the Revised.
Command Syntax
WRIte COrresponding Nets
<netnames>
[ -COMbinational ]
[ -INCLUDE_FANIN <netnames>]
[ -INCLUDE_NEQ_FANIN]
[ -module <module_name> ]
[ -EFFort < low | high | medium | ultra > ]
[ -threads <number> ]
[ -replace ]
[ -Golden | -Revised ]
[-verbose]
(LEC Mode)
Revised
© 2023 Cadence Design Systems, Inc. All rights reserved,.
Option : -include_fanin
To find the equivalent signals for all gates in the fan-in cone of the
specified signal, not need to run “write corresponding nets” for each
individual signal!
Assume B and C are in the fanin cone of signal A. To find the equivalent
signals for A, B, and C with this option at the same time by specified A
Example:
Example :
Example :
172 © 2022 Cadence Design Systems, Inc. Cadence confidential. Internal use only.
CECO crashed before executing “apply patch”
1. Check the “patch” file is ready or not.
………
read design G1.v
read design patch.v –append
read design G2.v -revised
apply patch *_eco
Optimize patch ……
Example :
175
//Internal Error : Cannot find Non-EQ in the fanin
cone (abort:1)
Occurred when executing “compare eco hierarchy ” command
// Command: compare eco hierarchy –verbose
//Internal Error : Cannot find Non-EQ in the fanin cone (aborts : 1)
(G) ……
(R) …………….
(+) (G)……..
(+) (R) ……..
Root Cause : Find the eco path would be in the datapath fanin cone
and would have abort occurred.
CFM ECO can not handle this kind of path well
because the default compare engine effort is low
Tool will spend a lot of time to do the analysis also.
Workaround :
set compare effort ultra (high) before executing the command
Suggestion
Have applied “set eco option –flat ” ?
Try “-effort medium” when executing “analyze eco” command
make sure the technology library is read in as the library, not as part of
the design.
Bug ?? …………… Call tool owner /Cadence
Root cause :
This gate located in the ICG cell.
But the wrapper name, hc_gtck_cell, is not supported by CECO.
If the name of the ICG wrapper is not default style, please use
‘add noblack box’ to force CECO to flatten these ICG wrapper
Solution
set naming rule –hierarchical_separator “_” –golden
flatten –matchhier –nolib –revised
uniquify –all –revised -nolib