Skip to content

Commit e3ff72f

Browse files
authored
Merge pull request #4117 from oharboe/eqy-retirement
Remove EQUIVALENCE_CHECK, superseded by LEC_CHECK
2 parents b1cf5e6 + 9fc2b77 commit e3ff72f

13 files changed

Lines changed: 1 addition & 109 deletions

File tree

docs/user/FlowVariables.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ configuration file.
137137
| <a name="DPO_MAX_DISPLACEMENT"></a>DPO_MAX_DISPLACEMENT| Specifies how far an instance can be moved when optimizing.| 5 1|
138138
| <a name="EARLY_SIZING_CAP_RATIO"></a>EARLY_SIZING_CAP_RATIO| Ratio between the input pin capacitance and the output pin load during initial gate sizing.| |
139139
| <a name="ENABLE_DPO"></a>ENABLE_DPO| Enable detail placement with improve_placement feature.| 1|
140-
| <a name="EQUIVALENCE_CHECK"></a>EQUIVALENCE_CHECK| Enable running equivalence checks to verify logical correctness of repair_timing.| 0|
141140
| <a name="FASTROUTE_TCL"></a>FASTROUTE_TCL| Specifies a Tcl script with commands to run before FastRoute.| |
142141
| <a name="FILL_CELLS"></a>FILL_CELLS| Fill cells are used to fill empty sites. If not set or empty, fill cell insertion is skipped.| |
143142
| <a name="FILL_CONFIG"></a>FILL_CONFIG| JSON rule file for metal fill during chip finishing.| |
@@ -230,7 +229,6 @@ configuration file.
230229
| <a name="RCX_RULES"></a>RCX_RULES| RC Extraction rules file path.| |
231230
| <a name="RECOVER_POWER"></a>RECOVER_POWER| Specifies how many percent of paths with positive slacks can be slowed for power savings [0-100].| 0|
232231
| <a name="REMOVE_ABC_BUFFERS"></a>REMOVE_ABC_BUFFERS (deprecated)| Remove abc buffers from the netlist. If timing repair in floorplanning is taking too long, use a SETUP/HOLD_SLACK_MARGIN to terminate timing repair early instead of using REMOVE_ABC_BUFFERS or set SKIP_LAST_GASP=1.| 0|
233-
| <a name="REMOVE_CELLS_FOR_EQY"></a>REMOVE_CELLS_FOR_EQY| String patterns directly passed to write_verilog -remove_cells <> for equivalence checks.| |
234232
| <a name="REMOVE_CELLS_FOR_LEC"></a>REMOVE_CELLS_FOR_LEC| String patterns directly passed to write_verilog -remove_cells <> for lec checks.| |
235233
| <a name="REPAIR_PDN_VIA_LAYER"></a>REPAIR_PDN_VIA_LAYER| Remove power grid vias which generate DRC violations after detailed routing.| |
236234
| <a name="REPORT_CLOCK_SKEW"></a>REPORT_CLOCK_SKEW| Report clock skew as part of reporting metrics, starting at CTS, before which there is no clock skew. This metric can be quite time-consuming, so it can be useful to disable.| 1|
@@ -480,14 +478,12 @@ configuration file.
480478
- [CTS_SNAPSHOT](#CTS_SNAPSHOT)
481479
- [CTS_SNAPSHOTS](#CTS_SNAPSHOTS)
482480
- [DETAILED_METRICS](#DETAILED_METRICS)
483-
- [EQUIVALENCE_CHECK](#EQUIVALENCE_CHECK)
484481
- [HOLD_SLACK_MARGIN](#HOLD_SLACK_MARGIN)
485482
- [LEC_CHECK](#LEC_CHECK)
486483
- [MATCH_CELL_FOOTPRINT](#MATCH_CELL_FOOTPRINT)
487484
- [MAX_REPAIR_TIMING_ITER](#MAX_REPAIR_TIMING_ITER)
488485
- [POST_CTS_TCL](#POST_CTS_TCL)
489486
- [PRE_CTS_TCL](#PRE_CTS_TCL)
490-
- [REMOVE_CELLS_FOR_EQY](#REMOVE_CELLS_FOR_EQY)
491487
- [REPORT_CLOCK_SKEW](#REPORT_CLOCK_SKEW)
492488
- [SETUP_REPAIR_SEQUENCE](#SETUP_REPAIR_SEQUENCE)
493489
- [SETUP_SLACK_MARGIN](#SETUP_SLACK_MARGIN)

flow/designs/asap7/aes/config.mk

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,13 @@ export CORE_ASPECT_RATIO = 1
1313
export CORE_MARGIN = 2
1414
export PLACE_DENSITY = 0.65
1515
export TNS_END_PERCENT = 100
16-
export EQUIVALENCE_CHECK ?= 1
17-
export REMOVE_CELLS_FOR_EQY = TAPCELL*
1816

1917
ifeq ($(FLOW_VARIANT),top)
2018
export DESIGN_NAME = aes_cipher_top
2119
export SYNTH_BLACKBOXES = aes_key_expand_128
2220
else ifeq ($(FLOW_VARIANT),blackbox)
2321
export DESIGN_NAME = aes_key_expand_128
2422
else ifeq ($(FLOW_VARIANT),combine)
25-
export EQUIVALENCE_CHECK = 0
2623
# List blackbox twice to demonstrates that duplicate modules are ignored.
2724
export SYNTH_NETLIST_FILES = \
2825
$(WORK_HOME)/results/$(PLATFORM)/$(DESIGN_NICKNAME)/top/1_synth.v \

flow/designs/asap7/jpeg/config.mk

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,4 @@ export CORE_MARGIN = 2
1414
export PLACE_DENSITY = 0.75
1515

1616
export TNS_END_PERCENT = 100
17-
export EQUIVALENCE_CHECK ?= 1
18-
export REMOVE_CELLS_FOR_EQY = TAPCELL*
19-
2017

flow/designs/asap7/uart/config.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ export PLACE_DENSITY = 0.70
1313
export DIE_AREA = 0 0 17 17
1414
export CORE_AREA = 1.08 1.08 16 16
1515
export TNS_END_PERCENT = 100
16-
export EQUIVALENCE_CHECK ?= 1
17-
export REMOVE_CELLS_FOR_EQY = TAPCELL*
1816
export SKIP_GATE_CLONING = 1
1917
export VERILOG_TOP_PARAMS = DATA_WIDTH 8
2018
export SYNTH_HDL_FRONTEND = slang

flow/designs/nangate45/aes/config.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ export FLOORPLAN_DEF = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/aes_ng45_fp
99

1010
export PLACE_DENSITY_LB_ADDON = 0.20
1111
export TNS_END_PERCENT = 100
12-
export REMOVE_CELLS_FOR_EQY = TAPCELL*
13-
1412
# workaround for high congestion in post-grt repair
1513
export SKIP_INCREMENTAL_REPAIR = 1
1614

flow/designs/nangate45/gcd/config.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export ADDER_MAP_FILE :=
1111
export CORE_UTILIZATION ?= 55
1212
export PLACE_DENSITY_LB_ADDON = 0.20
1313
export TNS_END_PERCENT = 100
14-
export REMOVE_CELLS_FOR_EQY = TAPCELL*
1514
export SYNTH_REPEATABLE_BUILD ?= 1
1615

1716
# This needs a smaller pitch to accomodate a small block

flow/designs/sky130hd/gcd/config.mk

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,5 @@ export ADDER_MAP_FILE :=
99

1010
export CORE_UTILIZATION = 40
1111
export TNS_END_PERCENT = 100
12-
export EQUIVALENCE_CHECK ?= 1
13-
export REMOVE_CELLS_FOR_EQY = sky130_fd_sc_hd__tapvpwrvgnd*
14-
1512
export SWAP_ARITH_OPERATORS = 1
1613
export OPENROAD_HIERARCHICAL = 1

flow/designs/sky130hs/gcd/config.mk

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,5 @@ export ADDER_MAP_FILE :=
1111
export CORE_UTILIZATION = 50
1212
export PLACE_DENSITY_LB_ADDON = 0.1
1313
export TNS_END_PERCENT = 100
14-
export EQUIVALENCE_CHECK ?= 1
15-
export REMOVE_CELLS_FOR_EQY = sky130_fd_sc_hs__tapvpwrvgnd*
16-
1714
#export SYNTH_HDL_FRONTEND ?= slang
1815
#export OPENROAD_HIERARCHICAL ?= 1

flow/scripts/cts.tcl

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,12 @@ if { $::env(CTS_SNAPSHOTS) } {
5959
}
6060

6161
if { !$::env(SKIP_CTS_REPAIR_TIMING) } {
62-
if { $::env(EQUIVALENCE_CHECK) } {
63-
write_eqy_verilog 4_before_rsz.v
64-
}
6562
if { $::env(LEC_CHECK) } {
6663
write_lec_verilog 4_before_rsz_lec.v
6764
}
6865

6966
repair_timing_helper
7067

71-
if { $::env(EQUIVALENCE_CHECK) } {
72-
run_equivalence_test
73-
}
7468
if { $::env(LEC_CHECK) } {
7569
write_lec_verilog 4_after_rsz_lec.v
7670
run_lec_test 4_rsz 4_before_rsz_lec.v 4_after_rsz_lec.v

flow/scripts/load.tcl

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -49,70 +49,3 @@ proc load_design { design_file sdc_file } {
4949
set_delay_calculator prima
5050
}
5151
}
52-
53-
#===========================================================================================
54-
# Routines to run equivalence tests when they are enabled.
55-
56-
proc write_eqy_verilog { filename } {
57-
# Filter out cells with no verilog/not needed for equivalence such
58-
# as fillers and tap cells
59-
if { [env_var_exists_and_non_empty REMOVE_CELLS_FOR_EQY] } {
60-
write_verilog -remove_cells $::env(REMOVE_CELLS_FOR_EQY) $::env(RESULTS_DIR)/$filename
61-
} else {
62-
write_verilog $::env(RESULTS_DIR)/$filename
63-
}
64-
}
65-
66-
proc write_eqy_script { } {
67-
set top_cell [current_design]
68-
set outfile [open "$::env(OBJECTS_DIR)/4_eqy_test.eqy" w]
69-
# Gold netlist
70-
puts $outfile "\[gold]\nread_liberty -ignore_miss_func $::env(LIB_FILES)\n"
71-
puts $outfile "read_verilog -sv $::env(RESULTS_DIR)/4_before_rsz.v\n"
72-
puts $outfile "prep -top $top_cell -flatten\nmemory_map\n\n"
73-
# Modified netlist
74-
puts $outfile "\[gate]\nread_liberty -ignore_miss_func $::env(LIB_FILES)\n"
75-
puts $outfile "read_verilog -sv $::env(RESULTS_DIR)/4_after_rsz.v\n"
76-
puts $outfile "prep -top $top_cell -flatten\nmemory_map\n\n"
77-
78-
# Recommendation from eqy team on how to speed up a design
79-
puts $outfile "\[match *]\ngate-nomatch _*_.*"
80-
81-
# See issue OpenROAD#6545 "Equivalence check failure due to non-unique resizer nets"
82-
puts $outfile "gate-nomatch net*"
83-
84-
# Forbid matching on buffer instances or cloned instances to make it less
85-
# likely EQY will fail to prove equivalence because of its assuming structural
86-
# similarity between gold and gate netlists. This doesn't remove coverage.
87-
puts $outfile "gate-nomatch clone*"
88-
puts $outfile "gate-nomatch place*"
89-
puts $outfile "gate-nomatch rebuffer*"
90-
puts $outfile "gate-nomatch wire*"
91-
puts $outfile "gate-nomatch place*\n\n"
92-
93-
# Equivalence check recipe 1
94-
puts $outfile "\[strategy basic]\nuse sat\ndepth 10\n\n"
95-
# Equivalence check recipe 2
96-
puts $outfile "\[strategy sby]\nuse sby\ndepth 10\nengine smtbmc bitwuzla\n\n"
97-
98-
close $outfile
99-
}
100-
101-
proc run_equivalence_test { } {
102-
write_eqy_verilog 4_after_rsz.v
103-
write_eqy_script
104-
105-
# tclint-disable-next-line command-args
106-
eval exec eqy -d $::env(LOG_DIR)/4_eqy_output \
107-
--force \
108-
--jobs $::env(NUM_CORES) \
109-
$::env(OBJECTS_DIR)/4_eqy_test.eqy \
110-
> $::env(LOG_DIR)/4_equivalence_check.log
111-
set count \
112-
[exec grep -c "Successfully proved designs equivalent" $::env(LOG_DIR)/4_equivalence_check.log]
113-
if { $count == 0 } {
114-
error "Repair timing output failed equivalence test"
115-
} else {
116-
puts "Repair timing output passed equivalence test"
117-
}
118-
}

0 commit comments

Comments
 (0)