Skip to content

Commit ea3a113

Browse files
committed
Merge branch 'master' into secure-est_via_res
Signed-off-by: Eder Monteiro <[email protected]>
2 parents 627c3e1 + f8b8041 commit ea3a113

File tree

91 files changed

+490
-377
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+490
-377
lines changed

docs/user/FlowVariables.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ configuration file.
146146
| <a name="GPL_TIMING_DRIVEN"></a>GPL_TIMING_DRIVEN| Specifies whether the placer should use timing driven placement.| 1|
147147
| <a name="GUI_TIMING"></a>GUI_TIMING| Load timing information when opening GUI. For large designs, this can be quite time consuming. Useful to disable when investigating non-timing aspects like floorplan, placement, routing, etc.| 1|
148148
| <a name="HOLD_SLACK_MARGIN"></a>HOLD_SLACK_MARGIN| Specifies a time margin for the slack when fixing hold violations. This option allows you to overfix or underfix (negative value, terminate retiming before 0 or positive slack). floorplan.tcl uses min of HOLD_SLACK_MARGIN and 0 (default hold slack margin). This avoids overrepair in floorplan for hold by default, but allows skipping hold repair using a negative HOLD_SLACK_MARGIN. Exiting timing repair early is useful in exploration where the .sdc has a fixed clock period at the design's target clock period and where HOLD/SETUP_SLACK_MARGIN is used to avoid overrepair (extremely long running times) when exploring different parameter settings. When an ideal clock is used, that is before CTS, a clock insertion delay of 0 is used in timing paths. This creates a mismatch between macros that have a .lib file from after CTS, when the clock is propagated. To mitigate this, OpenSTA will use subtract the clock insertion delay of macros when calculating timing with ideal clock. Provided that min_clock_tree_path and max_clock_tree_path are in the .lib file, which is the case for macros built with OpenROAD. This is less accurate than if OpenROAD had created a placeholder clock tree for timing estimation purposes prior to CTS. There will inevitably be inaccuracies in the timing calculation prior to CTS. Use a slack margin that is low enough, even negative, to avoid overrepair. Inaccuracies in the timing prior to CTS can also lead to underrepair, but there no obvious and simple way to avoid underrapir in these cases. Overrepair can lead to excessive runtimes in repair or too much buffering being added, which can present itself as congestion of hold cells or buffer cells. Another use of SETUP/HOLD_SLACK_MARGIN is design parameter exploration when trying to find the minimum clock period for a design. The SDC_FILE for a design can be quite complicated and instead of modifying the clock period in the SDC_FILE, which can be non-trivial, the clock period can be fixed at the target frequency and the SETUP/HOLD_SLACK_MARGIN can be swept to find a plausible current minimum clock period.| 0|
149-
| <a name="IO_CONSTRAINTS"></a>IO_CONSTRAINTS| File path to the IO constraints .tcl file.| |
149+
| <a name="IO_CONSTRAINTS"></a>IO_CONSTRAINTS| File path to the IO constraints .tcl file. Also used for manual placement.| |
150150
| <a name="IO_PLACER_H"></a>IO_PLACER_H| A list of metal layers on which the I/O pins are placed horizontally (top and bottom of the die).| |
151151
| <a name="IO_PLACER_V"></a>IO_PLACER_V| A list of metal layers on which the I/O pins are placed vertically (sides of the die).| |
152152
| <a name="IR_DROP_LAYER"></a>IR_DROP_LAYER| Default metal layer to report IR drop.| |
@@ -239,7 +239,7 @@ configuration file.
239239
| <a name="SYNTH_MINIMUM_KEEP_SIZE"></a>SYNTH_MINIMUM_KEEP_SIZE| For hierarchical synthesis, we keep modules of larger area than given by this variable and flatten smaller modules. The area unit used is the size of a basic nand2 gate from the platform's standard cell library. The default value is platform specific.| 0|
240240
| <a name="SYNTH_NETLIST_FILES"></a>SYNTH_NETLIST_FILES| Skips synthesis and uses the supplied netlist files. If the netlist files contains duplicate modules, which can happen when using hierarchical synthesis on indvidual netlist files and combining here, subsequent modules are silently ignored and only the first module is used.| |
241241
| <a name="SYNTH_OPT_HIER"></a>SYNTH_OPT_HIER| Optimize constants across hierarchical boundaries.| |
242-
| <a name="SYNTH_RETIME_MODULES"></a>SYNTH_RETIME_MODULES| List of modules to apply retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. This is an experimental option and may cause adverse effects.| |
242+
| <a name="SYNTH_RETIME_MODULES"></a>SYNTH_RETIME_MODULES| *This is an experimental option and may cause adverse effects.* *No effort has been made to check if the retimed RTL is logically equivalent to the non-retimed RTL.* List of modules to apply automatic retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. The main use case is to quickly identify if performance can be improved by manually retiming the input RTL. Retiming will treat module ports like register endpoints/startpoints. The objective function of retiming isn't informed by SDC, even the clock period is ignored. As such, retiming will optimize for best delay at potentially high register number cost. Automatic retiming can produce suboptimal results as its timing model is crude and it doesn't find the optimal distribution of registers on long pipelines. See OR discussion #8080.| |
243243
| <a name="SYNTH_WRAPPED_OPERATORS"></a>SYNTH_WRAPPED_OPERATORS| Synthesize multiple architectural options for each arithmetic operator in the design. These options are available for switching among in later stages of the flow.| |
244244
| <a name="TAPCELL_TCL"></a>TAPCELL_TCL| Path to Endcap and Welltie cells file.| |
245245
| <a name="TAP_CELL_NAME"></a>TAP_CELL_NAME| Name of the cell to use in tap cell insertion.| |
@@ -355,7 +355,6 @@ configuration file.
355355
- [FLOORPLAN_DEF](#FLOORPLAN_DEF)
356356
- [GPL_ROUTABILITY_DRIVEN](#GPL_ROUTABILITY_DRIVEN)
357357
- [GPL_TIMING_DRIVEN](#GPL_TIMING_DRIVEN)
358-
- [IO_CONSTRAINTS](#IO_CONSTRAINTS)
359358
- [IO_PLACER_H](#IO_PLACER_H)
360359
- [IO_PLACER_V](#IO_PLACER_V)
361360
- [MATCH_CELL_FOOTPRINT](#MATCH_CELL_FOOTPRINT)

etc/DependencyInstaller.sh

Lines changed: 100 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,14 @@ _installCommon() {
6363
fi
6464
}
6565

66-
_installCentosCleanUp() {
66+
# Enterprise Linux 7 cleanup
67+
_install_EL7_CleanUp() {
6768
yum clean -y all
6869
rm -rf /var/lib/apt/lists/*
6970
}
7071

71-
_installCentosPackages() {
72+
# Enterprise Linux 7 package installation (EL7 = RHEL 7 or CentOS 7)
73+
_install_EL7_Packages() {
7274
yum -y update
7375
yum -y install \
7476
time \
@@ -89,6 +91,67 @@ _installCentosPackages() {
8991
fi
9092
}
9193

94+
95+
# Enterprise Linux 8/9 cleanup
96+
_install_EL8_EL9_CleanUp() {
97+
dnf clean -y all
98+
rm -rf /var/lib/apt/lists/*
99+
}
100+
101+
# Enterprise Linux 8/9 package installation (EL8/EL9 = RHEL, Rocky Linux, AlmaLinux, or CentOS 8 as no CentOS 9 exists)
102+
_install_EL8_EL9_Packages() {
103+
# Re-detect EL version for appropriate KLayout package
104+
if [[ -f /etc/os-release ]]; then
105+
elVersion=$(awk -F= '/^VERSION_ID/{print $2}' /etc/os-release | sed 's/"//g' | cut -d. -f1)
106+
else
107+
echo "ERROR: Could not detect Enterprise Linux version"
108+
exit 1
109+
fi
110+
111+
# EL8 and EL9 use `dnf`, instead of `yum`
112+
dnf -y update
113+
dnf -y install \
114+
time \
115+
ruby \
116+
ruby-devel
117+
118+
# Install KLayout based on EL version, note the different URLs
119+
case "${elVersion}" in
120+
"8")
121+
if ! [ -x "$(command -v klayout)" ]; then
122+
dnf -y install https://www.klayout.org/downloads/CentOS_8/klayout-${klayoutVersion}-0.x86_64.rpm
123+
else
124+
currentVersion=$(klayout -v | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
125+
if _versionCompare "$currentVersion" -ge $klayoutVersion; then
126+
echo "KLayout version greater than or equal to ${klayoutVersion}"
127+
else
128+
echo "KLayout version less than ${klayoutVersion}"
129+
sudo dnf remove -y klayout
130+
dnf -y install https://www.klayout.org/downloads/CentOS_8/klayout-${klayoutVersion}-0.x86_64.rpm
131+
fi
132+
fi
133+
;;
134+
"9")
135+
if ! [ -x "$(command -v klayout)" ]; then
136+
dnf -y install https://www.klayout.org/downloads/RockyLinux_9/klayout-${klayoutVersion}-0.x86_64.rpm
137+
else
138+
currentVersion=$(klayout -v | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
139+
if _versionCompare "$currentVersion" -ge $klayoutVersion; then
140+
echo "KLayout version greater than or equal to ${klayoutVersion}"
141+
else
142+
echo "KLayout version less than ${klayoutVersion}"
143+
sudo dnf remove -y klayout
144+
dnf -y install https://www.klayout.org/downloads/RockyLinux_9/klayout-${klayoutVersion}-0.x86_64.rpm
145+
fi
146+
fi
147+
;;
148+
*)
149+
echo "ERROR: Unsupported Enterprise Linux version: ${elVersion}"
150+
exit 1
151+
;;
152+
esac
153+
}
154+
92155
_installUbuntuCleanUp() {
93156
apt-get autoclean -y
94157
apt-get autoremove -y
@@ -365,15 +428,45 @@ case "${platform}" in
365428
esac
366429

367430
case "${os}" in
368-
"CentOS Linux" )
431+
"CentOS Linux" | "Red Hat Enterprise Linux"* | "AlmaLinux" | "Rocky Linux")
432+
# Enterprise Linux support - dispatch based on specific version
369433
if [[ ${CI} == "yes" ]]; then
370434
echo "WARNING: Installing CI dependencies is only supported on Ubuntu 22.04" >&2
371435
fi
372-
_installORDependencies
373-
if [[ "${option}" == "base" || "${option}" == "all" ]]; then
374-
_installCentosPackages
375-
_installCentosCleanUp
436+
437+
# Detect EL version to choose appropriate functions
438+
if [[ -f /etc/os-release ]]; then
439+
elVersion=$(awk -F= '/^VERSION_ID/{print $2}' /etc/os-release | sed 's/"//g' | cut -d. -f1)
440+
else
441+
echo "ERROR: Could not detect Enterprise Linux version" >&2
442+
exit 1
376443
fi
444+
445+
# First install OpenROAD base
446+
_installORDependencies
447+
448+
# Determine between EL7 vs EL8/9, since yum vs dnf should be used, and different Klayout builds exist
449+
case "${elVersion}" in
450+
"7")
451+
# EL7 = RHEL 7 or CentOS 7
452+
if [[ "${option}" == "base" || "${option}" == "all" ]]; then
453+
_install_EL7_Packages
454+
_install_EL7_CleanUp
455+
fi
456+
;;
457+
"8"|"9")
458+
# EL8/EL9 = RHEL, Rocky Linux, AlmaLinux, or CentOS 8+
459+
if [[ "${option}" == "base" || "${option}" == "all" ]]; then
460+
_install_EL8_EL9_Packages
461+
_install_EL8_EL9_CleanUp
462+
fi
463+
;;
464+
*)
465+
echo "ERROR: Unsupported Enterprise Linux version: ${elVersion}" >&2
466+
exit 1
467+
;;
468+
esac
469+
377470
if [[ "${option}" == "common" || "${option}" == "all" ]]; then
378471
_installCommon
379472
fi

flow/Makefile

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ MAKEFLAGS += --no-builtin-rules
132132

133133
#-------------------------------------------------------------------------------
134134
# Default target when invoking without specific target.
135-
.DEFAULT_GOAL := finish
135+
.DEFAULT_GOAL := all
136136

137137
#-------------------------------------------------------------------------------
138138
# Proper way to initiate SHELL for make
@@ -179,15 +179,6 @@ build_macros: $(BLOCK_LEFS) $(BLOCK_TYP_LIBS)
179179
$(foreach block,$(BLOCKS),$(eval $(call GENERATE_ABSTRACT_RULE,$(WORK_HOME)/results/$(PLATFORM)/$(DESIGN_NICKNAME)_$(block)/$(FLOW_VARIANT)/${block}.lef,$(WORK_HOME)/results/$(PLATFORM)/$(DESIGN_NICKNAME)_$(block)/$(FLOW_VARIANT)/${block}_typ.lib,$(shell dirname $(DESIGN_CONFIG))/${block}/config.mk)))
180180
$(foreach block,$(BLOCKS),$(eval $(WORK_HOME)/results/$(PLATFORM)/$(DESIGN_NICKNAME)_$(block)/$(FLOW_VARIANT)/6_final.gds: $(WORK_HOME)/results/$(PLATFORM)/$(DESIGN_NICKNAME)_$(block)/$(FLOW_VARIANT)/${block}.lef))
181181

182-
# Utility to print tool version information
183-
#-------------------------------------------------------------------------------
184-
.PHONY: versions.txt
185-
versions.txt:
186-
mkdir -p $(OBJECTS_DIR)
187-
@echo "yosys $(shell $(YOSYS_EXE) -V 2>&1)" > $(OBJECTS_DIR)/$@
188-
@echo "openroad $(shell $(OPENROAD_EXE) -version 2>&1)" >> $(OBJECTS_DIR)/$@
189-
@echo "klayout $(shell $(KLAYOUT_CMD) -zz -v 2>&1)" >> $(OBJECTS_DIR)/$@
190-
191182
# Pre-process libraries
192183
# ==============================================================================
193184

@@ -416,7 +407,7 @@ endef
416407

417408
$(eval $(call do-step,1_3_synth,$(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc,synth_odb))
418409

419-
$(eval $(call do-step,2_1_floorplan,$(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(FOOTPRINT) $(SIG_MAP_FILE) $(FOOTPRINT_TCL) $(DONT_USE_SC_LIB),floorplan))
410+
$(eval $(call do-step,2_1_floorplan,$(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(FOOTPRINT) $(SIG_MAP_FILE) $(FOOTPRINT_TCL) $(DONT_USE_SC_LIB) $(IO_CONSTRAINTS),floorplan))
420411

421412
$(eval $(call do-copy,2_floorplan,2_1_floorplan.sdc,,.sdc))
422413

@@ -461,7 +452,7 @@ place: $(RESULTS_DIR)/3_place.odb \
461452
#-------------------------------------------------------------------------------
462453
$(eval $(call do-step,3_1_place_gp_skip_io,$(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/2_floorplan.sdc $(LIB_FILES),global_place_skip_io))
463454

464-
$(eval $(call do-step,3_2_place_iop,$(RESULTS_DIR)/3_1_place_gp_skip_io.odb $(IO_CONSTRAINTS),io_placement))
455+
$(eval $(call do-step,3_2_place_iop,$(RESULTS_DIR)/3_1_place_gp_skip_io.odb,io_placement))
465456

466457
# STEP 3: Global placement with placed IOs, timing-driven, and routability-driven.
467458
#-------------------------------------------------------------------------------
@@ -580,16 +571,14 @@ clean_route:
580571

581572
.PHONY: klayout_tr_rpt
582573
klayout_tr_rpt: $(RESULTS_DIR)/5_route.def $(OBJECTS_DIR)/klayout.lyt
583-
$(call KLAYOUT_FOUND)
584-
$(KLAYOUT_CMD) -rd in_drc="$(REPORTS_DIR)/5_route_drc.rpt" \
574+
$(SCRIPTS_DIR)/klayout.sh -rd in_drc="$(REPORTS_DIR)/5_route_drc.rpt" \
585575
-rd in_def="$<" \
586576
-rd tech_file=$(OBJECTS_DIR)/klayout.lyt \
587577
-rm $(UTILS_DIR)/viewDrc.py
588578

589579
.PHONY: klayout_guides
590580
klayout_guides: $(RESULTS_DIR)/5_route.def $(OBJECTS_DIR)/klayout.lyt
591-
$(call KLAYOUT_FOUND)
592-
$(KLAYOUT_CMD) -rd in_guide="$(RESULTS_DIR)/route.guide" \
581+
$(SCRIPTS_DIR)/klayout.sh -rd in_guide="$(RESULTS_DIR)/route.guide" \
593582
-rd in_def="$<" \
594583
-rd net_name=$(GUIDE_NET) \
595584
-rd tech_file=$(OBJECTS_DIR)/klayout.lyt \
@@ -657,8 +646,7 @@ clean_abstract:
657646
# Merge wrapped macros using Klayout
658647
#-------------------------------------------------------------------------------
659648
$(WRAPPED_GDSOAS): $(OBJECTS_DIR)/klayout_wrap.lyt $(WRAPPED_LEFS)
660-
$(call KLAYOUT_FOUND)
661-
($(TIME_CMD) $(KLAYOUT_CMD) -zz -rd design_name=$(basename $(notdir $@)) \
649+
($(TIME_CMD) $(SCRIPTS_DIR)/klayout.sh -zz -rd design_name=$(basename $(notdir $@)) \
662650
-rd in_def=$(OBJECTS_DIR)/def/$(notdir $(@:$(STREAM_SYSTEM_EXT)=def)) \
663651
-rd in_files="$(ADDITIONAL_GDSOAS)" \
664652
-rd config_file=$(FILL_CONFIG) \
@@ -675,8 +663,7 @@ $(GDS_MERGED_FILE): $(RESULTS_DIR)/6_final.def $(OBJECTS_DIR)/klayout.lyt $(GDSO
675663

676664
.PHONY: do-gds-merged
677665
do-gds-merged:
678-
$(call KLAYOUT_FOUND)
679-
($(TIME_CMD) $(STDBUF_CMD) $(KLAYOUT_CMD) -zz -rd design_name=$(DESIGN_NAME) \
666+
($(TIME_CMD) $(STDBUF_CMD) $(SCRIPTS_DIR)/klayout.sh -zz -rd design_name=$(DESIGN_NAME) \
680667
-rd in_def=$(RESULTS_DIR)/6_final.def \
681668
-rd in_files="$(GDSOAS_FILES) $(WRAPPED_GDSOAS)" \
682669
-rd seal_file="$(SEAL_GDSOAS)" \
@@ -700,8 +687,7 @@ drc: $(REPORTS_DIR)/6_drc.lyrdb
700687

701688
$(REPORTS_DIR)/6_drc.lyrdb: $(GDS_FINAL_FILE) $(KLAYOUT_DRC_FILE)
702689
ifneq ($(KLAYOUT_DRC_FILE),)
703-
$(call KLAYOUT_FOUND)
704-
($(TIME_CMD) $(KLAYOUT_CMD) -zz -rd in_gds="$<" \
690+
($(TIME_CMD) $(SCRIPTS_DIR)/klayout.sh -zz -rd in_gds="$<" \
705691
-rd report_file=$(abspath $@) \
706692
-r $(KLAYOUT_DRC_FILE)) 2>&1 | tee $(abspath $(LOG_DIR)/6_drc.log)
707693
# Hacky way of getting DRV count (don't error on no matches)
@@ -721,8 +707,7 @@ lvs: $(RESULTS_DIR)/6_lvs.lvsdb
721707

722708
$(RESULTS_DIR)/6_lvs.lvsdb: $(GDS_FINAL_FILE) $(KLAYOUT_LVS_FILE) $(OBJECTS_DIR)/6_final_concat.cdl
723709
ifneq ($(KLAYOUT_LVS_FILE),)
724-
$(call KLAYOUT_FOUND)
725-
($(TIME_CMD) $(KLAYOUT_CMD) -b -rd in_gds="$<" \
710+
($(TIME_CMD) $(SCRIPTS_DIR)/klayout.sh -b -rd in_gds="$<" \
726711
-rd cdl_file=$(abspath $(OBJECTS_DIR)/6_final_concat.cdl) \
727712
-rd report_file=$(abspath $@) \
728713
-r $(KLAYOUT_LVS_FILE)) 2>&1 | tee $(abspath $(LOG_DIR)/6_lvs.log)
@@ -746,8 +731,22 @@ clean_finish:
746731
#
747732
# ==============================================================================
748733

734+
.PHONY: check-openroad
735+
check-openroad:
736+
@if [ "$(strip $(OPENROAD_IS_VALID))" != "true" ]; then \
737+
echo "OPENROAD_EXE is set to '$(OPENROAD_EXE)', but it is either not found or not executable."; \
738+
exit 1; \
739+
fi
740+
741+
.PHONY: check-yosys
742+
check-yosys:
743+
@if [ "$(strip $(YOSYS_IS_VALID))" != "true" ]; then \
744+
echo "YOSYS_EXE is set to '$(YOSYS_EXE)', but it is either not found or not executable."; \
745+
exit 1; \
746+
fi
747+
749748
.PHONY: all
750-
all: synth floorplan place cts route finish
749+
all: check-yosys check-openroad synth floorplan place cts route finish
751750

752751
.PHONY: clean
753752
clean:
@@ -772,7 +771,7 @@ nuke: clean_test clean_issues
772771
#-------------------------------------------------------------------------------
773772
.PHONY: $(foreach file,$(RESULTS_DEF) $(RESULTS_GDS) $(RESULTS_OAS),klayout_$(file))
774773
$(foreach file,$(RESULTS_DEF) $(RESULTS_GDS) $(RESULTS_OAS),klayout_$(file)): klayout_%: $(OBJECTS_DIR)/klayout.lyt
775-
$(KLAYOUT_CMD) -nn $(OBJECTS_DIR)/klayout.lyt $(RESULTS_DIR)/$*
774+
$(SCRIPTS_DIR)/klayout.sh -nn $(OBJECTS_DIR)/klayout.lyt $(RESULTS_DIR)/$*
776775

777776
$(eval $(call OPEN_GUI_SHORTCUT,synth,1_synth.odb))
778777
$(eval $(call OPEN_GUI_SHORTCUT,floorplan,2_floorplan.odb))
@@ -818,7 +817,7 @@ test-unset-and-make-%: ; $(UNSET_AND_MAKE) $*
818817

819818
.phony: klayout
820819
klayout:
821-
$(KLAYOUT_CMD)
820+
$(SCRIPTS_DIR)/klayout.sh
822821

823822
.phony: run
824823
run:

flow/designs/asap7/aes-block/rules-base.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"compare": "=="
99
},
1010
"placeopt__design__instance__area": {
11-
"value": 7233,
11+
"value": 7231,
1212
"compare": "<="
1313
},
1414
"placeopt__design__instance__count__stdcell": {
@@ -24,7 +24,7 @@
2424
"compare": "<="
2525
},
2626
"cts__design__instance__count__hold_buffer": {
27-
"value": 1449,
27+
"value": 966,
2828
"compare": "<="
2929
},
3030
"globalroute__antenna_diodes_count": {
@@ -48,7 +48,7 @@
4848
"compare": "<="
4949
},
5050
"finish__timing__setup__ws": {
51-
"value": -99.09,
51+
"value": -92.83,
5252
"compare": ">="
5353
},
5454
"finish__design__instance__area": {

flow/designs/asap7/aes-mbff/rules-base.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"compare": "=="
99
},
1010
"placeopt__design__instance__area": {
11-
"value": 2214,
11+
"value": 2177,
1212
"compare": "<="
1313
},
1414
"placeopt__design__instance__count__stdcell": {
@@ -32,7 +32,7 @@
3232
"compare": "<="
3333
},
3434
"detailedroute__route__wirelength": {
35-
"value": 76679,
35+
"value": 74683,
3636
"compare": "<="
3737
},
3838
"detailedroute__route__drc_errors": {
@@ -48,7 +48,7 @@
4848
"compare": "<="
4949
},
5050
"finish__timing__setup__ws": {
51-
"value": -42.46,
51+
"value": -46.64,
5252
"compare": ">="
5353
},
5454
"finish__design__instance__area": {

flow/designs/asap7/aes/rules-base.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"compare": "=="
99
},
1010
"placeopt__design__instance__area": {
11-
"value": 2214,
11+
"value": 2177,
1212
"compare": "<="
1313
},
1414
"placeopt__design__instance__count__stdcell": {
@@ -32,7 +32,7 @@
3232
"compare": "<="
3333
},
3434
"detailedroute__route__wirelength": {
35-
"value": 74787,
35+
"value": 73373,
3636
"compare": "<="
3737
},
3838
"detailedroute__route__drc_errors": {
@@ -48,7 +48,7 @@
4848
"compare": "<="
4949
},
5050
"finish__timing__setup__ws": {
51-
"value": -73.23,
51+
"value": -48.56,
5252
"compare": ">="
5353
},
5454
"finish__design__instance__area": {

0 commit comments

Comments
 (0)