Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dft::ScanArchitect not cross-OS deterministic? #6411

Open
donn opened this issue Dec 22, 2024 · 2 comments
Open

dft::ScanArchitect not cross-OS deterministic? #6411

donn opened this issue Dec 22, 2024 · 2 comments

Comments

@donn
Copy link
Contributor

donn commented Dec 22, 2024

Describe the bug

The following tests pass on Linux but fail on macOS, ostensibly due to the chain somehow returning in a different order:

  • dft.scan_architect_clock_mix_sky130.tcl
  • dft.scan_architect_no_mix_sky130.tcl
  • dft.scan_architect_register_bank_no_clock_mix_sky130.tcl

Expected Behavior

Tests should not be sensitive to the operating system. This implies the behavior of dft::ScanArchitect is not OS-independent.

Environment

Git commit: 51302eb80b11576a01171d33452c362301d55143
kernel: Darwin 24.1.0
os: macOS 15.1
cmake version 3.30.5
CMake Warning (dev) at src/CMakeLists.txt:175 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning at src/CMakeLists.txt:267 (message):
  spdlog: SPDLOG_FMT_EXTERNAL=ON


CMake Warning (dev) at src/dpl/CMakeLists.txt:41 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/cts/CMakeLists.txt:36 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/drt/CMakeLists.txt:49 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/utl/CMakeLists.txt:38 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/dst/CMakeLists.txt:42 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/dft/test/CMakeLists.txt:20 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning:
  Manually-specified variables were not used by the project:

    VERBOSE


-- The CXX compiler identification is Clang 17.0.6
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/9i42ps9fng6akgv3fbv2c21fnsij7ay1-clang-wrapper-17.0.6/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenROAD version: v2.0-17776-g51302eb80
-- System name: Darwin
-- Compiler: Clang 17.0.6
-- Build type: RELEASE
-- Install prefix: /var/empty/local
-- C++ Standard: 17
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- The C compiler identification is Clang 17.0.6
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/9i42ps9fng6akgv3fbv2c21fnsij7ay1-clang-wrapper-17.0.6/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test C_COMPILER_SUPPORTS__-Wall
-- Performing Test C_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Success
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive - Success
-- Performing Test C_COMPILER_SUPPORTS__-x
-- Performing Test C_COMPILER_SUPPORTS__-x - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-x
-- Performing Test CXX_COMPILER_SUPPORTS__-x - Failed
-- Performing Test C_COMPILER_SUPPORTS__c++
-- Performing Test C_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__c++
-- Performing Test CXX_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17 - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- TCL library: /nix/store/pq5zjj1m0ql2as08yagn0ngnl00ndqki-tcl-8.6.15/lib/libtcl.dylib
-- TCL header: /nix/store/pq5zjj1m0ql2as08yagn0ngnl00ndqki-tcl-8.6.15/include/tcl.h
-- TCL readline library: /nix/store/safnrcyg7z47hl27qy0wri1v893rssf6-tclreadline-2.4.0/lib/libtclreadline.dylib
-- TCL readline header: /nix/store/safnrcyg7z47hl27qy0wri1v893rssf6-tclreadline-2.4.0/include
-- Found SWIG: /nix/store/rwpr3adsq8wrvq4mv4w1ndgy6qc4jv59-swig-4.2.1/bin/swig (found suitable version "4.2.1", minimum required is "4.0")
-- Using SWIG >= 4.2.1 -flatstaticmethod flag for python
-- Found Boost: /nix/store/w1kx6l12gsvj127gsn8b4a7hiqnirqng-boost-1.86.0-dev/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0")
-- boost: 1.86.0
-- Found GTest: /nix/store/j9025nqj2w69s6bx2i8w0xzx3vzv0n28-gtest-1.15.2-dev/lib/cmake/GTest/GTestConfig.cmake (found version "1.15.2")
-- GTest: 1.15.2
-- Found Python3: /nix/store/7c494qcmh62av43zsxr3wvzh8hcpy1vl-python3-3.12.7/include/python3.12 (found version "3.12.7") found components: Development Development.Module Development.Embed
-- Found ZLIB: /nix/store/10r87kpkn4zrj0d1qhq8nfr8g2gf0imp-zlib-1.3.1/lib/libz.dylib (found version "1.3.1")
-- Found Threads: TRUE
-- spdlog: 1.14.1
-- Found BISON: /nix/store/gynxhf1z1h7610ddq5fa5dpk5jnqs1xl-bison-3.8.2/bin/bison (found version "3.8.2")
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- STA version: 2.6.0
-- STA git sha: aa598a2f14c5c142e90391a69988523505e7db3d
-- System name: Darwin
-- Compiler: Clang 17.0.6
-- Build type: RELEASE
-- Build CXX_FLAGS: -O3 -DNDEBUG
-- Install prefix: /var/empty/local
-- Found FLEX: /nix/store/0ag85xd3gylpgcwv161kdhrvbn8m927v-flex-2.6.4/bin/flex (found version "2.6.4")
-- TCL library: /nix/store/pq5zjj1m0ql2as08yagn0ngnl00ndqki-tcl-8.6.15/lib/libtcl.dylib
-- TCL header: /nix/store/pq5zjj1m0ql2as08yagn0ngnl00ndqki-tcl-8.6.15/include/tcl.h
-- TCL readline library: /nix/store/safnrcyg7z47hl27qy0wri1v893rssf6-tclreadline-2.4.0/lib/libtclreadline.dylib
-- TCL readline header: /nix/store/safnrcyg7z47hl27qy0wri1v893rssf6-tclreadline-2.4.0/include/tclreadline.h
-- CUDD library: /nix/store/p2xp51ql1237wm62i06sfvx49lgw7qkn-cudd-3.0.0/lib/libcudd.a
-- CUDD header: /nix/store/p2xp51ql1237wm62i06sfvx49lgw7qkn-cudd-3.0.0/include/cudd.h
-- SSTA: 0
-- Found SWIG: /nix/store/rwpr3adsq8wrvq4mv4w1ndgy6qc4jv59-swig-4.2.1/bin/swig (found suitable version "4.2.1", minimum required is "3.0")
-- STA executable: /Users/donn/efabless/openroad/src/sta/app/sta
-- Found Protobuf: /nix/store/q04cfyxpr3ijb038bjwg6h10djlzrvzq-protobuf-28.3/lib/libprotobuf.dylib (found version "5.28.3")
-- Found re2: /nix/store/4jxydg60agwghwz9l11m3bdf7wq03818-re2-2024-07-02-dev/lib/cmake/re2/re2Config.cmake (found version "11.0.0")
-- Found GLPK: /nix/store/1libkw361rhsg15x41dspsdzn76hgyrn-glpk-5.0/lib/libglpk.dylib
-- Found OpenMP_CXX: -fopenmp=libomp (found version "5.1")
-- Found OpenMP: TRUE (found version "5.1")
-- Found OR-Tools: /nix/store/1rrgbv84blrlarbpyg12s34d29j66c4v-or-tools-9.11/lib/cmake/ortools (version: 9.11.9999)
-- TCL library: /nix/store/pq5zjj1m0ql2as08yagn0ngnl00ndqki-tcl-8.6.15/lib/libtcl.dylib
-- TCL header: /nix/store/pq5zjj1m0ql2as08yagn0ngnl00ndqki-tcl-8.6.15/include/tcl.h
-- Found OpenMP_C: -fopenmp=libomp (found version "5.1")
-- Found OpenMP: TRUE (found version "5.1")
-- Found OpenMP: TRUE (found version "5.1")
-- GUI is enabled
-- Found Boost: /nix/store/w1kx6l12gsvj127gsn8b4a7hiqnirqng-boost-1.86.0-dev/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0") found components: serialization
-- Could NOT find VTune (missing: VTune_LIBRARIES VTune_INCLUDE_DIRS) 
-- Found Boost: /nix/store/w1kx6l12gsvj127gsn8b4a7hiqnirqng-boost-1.86.0-dev/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found suitable version "1.86.0", minimum required is "1.78")
-- TCL library: /nix/store/pq5zjj1m0ql2as08yagn0ngnl00ndqki-tcl-8.6.15/lib/libtcl.dylib
-- TCL header: /nix/store/pq5zjj1m0ql2as08yagn0ngnl00ndqki-tcl-8.6.15/include/tcl.h
-- Found Boost: /nix/store/w1kx6l12gsvj127gsn8b4a7hiqnirqng-boost-1.86.0-dev/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0") found components: serialization system thread
-- Found Boost: /nix/store/w1kx6l12gsvj127gsn8b4a7hiqnirqng-boost-1.86.0-dev/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0")
-- Found Eigen3: /nix/store/d18dxj2z2vz78993djs6cgsxfp50l7bq-eigen-3.4.0/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.0")
-- TCL readline enabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done (17.5s)
-- Generating done (1.5s)
-- Build files have been written to: /tmp/nix-shell.pMfTAh/tmp.gIduWB8UZf

To Reproduce

On a macOS machine:

mkdir build
cd build
cmake -G Ninja ..
ninja
ctest -R scan_architect

Relevant log output

=====
Linux
=====

Test project /Users/donn/efabless/openroad/build-linux
    Start 963: dft.scan_architect_clock_mix_sky130.tcl
1/3 Test #963: dft.scan_architect_clock_mix_sky130.tcl ....................   Passed    0.31 sec
    Start 964: dft.scan_architect_no_mix_sky130.tcl
2/3 Test #964: dft.scan_architect_no_mix_sky130.tcl .......................   Passed    0.30 sec
    Start 965: dft.scan_architect_register_bank_no_clock_mix_sky130.tcl
3/3 Test #965: dft.scan_architect_register_bank_no_clock_mix_sky130.tcl ...   Passed    0.32 sec

100% tests passed, 0 tests failed out of 3

Label Time Summary:
IntegrationTest tcl dft log_compare    =   0.93 sec*proc (3 tests)

Total Test time (real) =   1.01 sec

=====
macOS
=====

Test project /Users/donn/efabless/openroad/build-mac
    Start 963: dft.scan_architect_clock_mix_sky130.tcl
1/3 Test #963: dft.scan_architect_clock_mix_sky130.tcl ....................***Failed    0.38 sec
    Start 964: dft.scan_architect_no_mix_sky130.tcl
2/3 Test #964: dft.scan_architect_no_mix_sky130.tcl .......................***Failed    0.38 sec
    Start 965: dft.scan_architect_register_bank_no_clock_mix_sky130.tcl
3/3 Test #965: dft.scan_architect_register_bank_no_clock_mix_sky130.tcl ...***Failed    0.38 sec

0% tests passed, 3 tests failed out of 3

Label Time Summary:
IntegrationTest tcl dft log_compare    =   1.14 sec*proc (3 tests)

Total Test time (real) =   1.19 sec

The following tests FAILED:
        963 - dft.scan_architect_clock_mix_sky130.tcl (Failed)
        964 - dft.scan_architect_no_mix_sky130.tcl (Failed)
        965 - dft.scan_architect_register_bank_no_clock_mix_sky130.tcl (Failed)
Errors while running CTest
Output from these tests are in: /Users/donn/efabless/openroad/build-mac/Testing/Temporary/LastTest.log
Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.

Screenshots

No response

Additional Context

No response

@maliberty
Copy link
Member

With no access to a mac I have no way to debug this. We make a best effort on mac but make no promises. Can you track it down?

@donn
Copy link
Contributor Author

donn commented Dec 23, 2024

Will do

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants