Skip to content

mock-cpu: set_max_delay -from uses register output pins, silently dropping reg2out constraint #4152

@ovebryne

Description

@ovebryne

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).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions