Subject
[Flow] for any util, flow Makefile, or flow script issues.
Describe the bug
flow/designs/asap7/mock-cpu/constraint.sdc lines 44-46 collect register output pins (Q/QN) and use them as -from start points in set_max_delay:
set all_register_outputs [get_pins -of_objects [all_registers] -filter {direction == output}]
set_max_delay 80 -from $all_register_outputs -to [all_outputs]
Register output pins are not valid SDC timing exception start points — OpenSTA only accepts clock pins, latch data pins, and top-level input ports. The constraint is silently dropped, producing 1000+ STA-1554 warnings, leaving reg2out paths unconstrained, and causing hold_ws = 1e+42.
Expected Behavior
Zero STA-1554 warnings, reg2out constraint applied, hold_ws reports a real slack value (18.16 ps with the fix).
Environment
Git commit: 7bc63749c8850e2937c58b0c3258a5df23db98ae
kernel: Linux 6.17.0-22-generic
os: Ubuntu 25.10 (Questing Quokka)
cmake version 3.31.6
CMake Error at third-party/CMakeLists.txt:56 (add_subdirectory):
The source directory
/home/ove/src/OpenROAD/third-party/abc
does not contain a CMakeLists.txt file.
CMake Error at /usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
Could NOT find SWIG (missing: SWIG_EXECUTABLE SWIG_DIR) (Required is at
least version "4.3")
Call Stack (most recent call first):
/usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.31/Modules/FindSWIG.cmake:184 (find_package_handle_standard_args)
src/CMakeLists.txt:142 (find_package)
-- The CXX compiler identification is GNU 15.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenROAD version: 26Q2-277-g7bc63749c8
-- System name: Linux
-- Compiler: GNU 15.2.0
-- Build type: RELEASE
-- Install prefix: /usr/local
-- C++ Standard: 20
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- LTO/IPO is enabled
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Configuring incomplete, errors occurred!
To Reproduce
cd flow
make DESIGN_CONFIG=designs/asap7/mock-cpu/config.mk floorplan
grep -c 'STA-1554' logs/asap7/mock-cpu/base/2_1_floorplan.log
# 1001 (hit message limit)
Relevant log output
[WARNING STA-1554] ./results/asap7/mock-cpu/base/2_1_floorplan.sdc line 112388, 'mult_result[115][16]$_DFF_P_/QN' is not a valid start point.
[WARNING STA-1554] ./results/asap7/mock-cpu/base/2_1_floorplan.sdc line 112388, 'mult_result[116][0]$_DFF_P_/QN' is not a valid start point.
...
[WARNING STA-1554] message limit (1000) reached. This message will no longer print.
Screenshots
No response
Additional Context
Suggested fix — replace $all_register_outputs (QN pins) with [all_registers] (instances, clock pins used as start points per parallaxsw/OpenSTA#265):
diff --git a/flow/designs/asap7/mock-cpu/constraint.sdc b/flow/designs/asap7/mock-cpu/constraint.sdc
index c2a2c3b26..f0ecefa1c 100644
--- a/flow/designs/asap7/mock-cpu/constraint.sdc
+++ b/flow/designs/asap7/mock-cpu/constraint.sdc
@@ -41,9 +41,8 @@ foreach input [all_inputs] {
set_max_delay 80 -from $non_clk_inputs -to [all_outputs]
group_path -name in2out -from $non_clk_inputs -to [all_outputs]
-set all_register_outputs [get_pins -of_objects [all_registers] -filter {direction == output}]
set_max_delay 80 -from $non_clk_inputs -to [all_registers]
-set_max_delay 80 -from $all_register_outputs -to [all_outputs]
+set_max_delay 80 -from [all_registers] -to [all_outputs]
group_path -name in2reg -from $non_clk_inputs -to [all_registers]
group_path -name reg2out -from [all_registers] -to [all_outputs]
group_path -name reg2reg -from [all_registers] -to [all_registers]
Related:
#3850 (hold WNS 1e+42)
parallaxsw/OpenSTA#265 (maintainer confirmation)
The-OpenROAD-Project/OpenROAD#7678 (STA-1554 warning).
Subject
[Flow] for any util, flow Makefile, or flow script issues.
Describe the bug
flow/designs/asap7/mock-cpu/constraint.sdc lines 44-46 collect register output pins (Q/QN) and use them as -from start points in set_max_delay:
Register output pins are not valid SDC timing exception start points — OpenSTA only accepts clock pins, latch data pins, and top-level input ports. The constraint is silently dropped, producing 1000+ STA-1554 warnings, leaving reg2out paths unconstrained, and causing hold_ws = 1e+42.
Expected Behavior
Zero STA-1554 warnings, reg2out constraint applied, hold_ws reports a real slack value (18.16 ps with the fix).
Environment
To Reproduce
Relevant log output
Screenshots
No response
Additional Context
Suggested fix — replace
$all_register_outputs (QN pins)with[all_registers](instances, clock pins used as start points per parallaxsw/OpenSTA#265):Related:
#3850 (hold WNS 1e+42)
parallaxsw/OpenSTA#265 (maintainer confirmation)
The-OpenROAD-Project/OpenROAD#7678 (STA-1554 warning).