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

Several DRT-0225: Pin not visited warnings #6712

Open
ozarkstock opened this issue Feb 13, 2025 · 2 comments
Open

Several DRT-0225: Pin not visited warnings #6712

ozarkstock opened this issue Feb 13, 2025 · 2 comments
Assignees
Labels
drt Detailed Routing

Comments

@ozarkstock
Copy link

ozarkstock commented Feb 13, 2025

Describe the bug

I am using a PDK with a limited metal stack of only metal 1 and metal 2. When running OpenROAD to place and route a design, the DRT-0225 warnings are produced for several nets. Looking at some other LEF views from other PDK's, I did some experimentation on what layer the tool has the best results routing to pins with. Following another process's example, one attempt was to declare pins on both the metal 1 and metal 2 layer in the same spot. This produced less than ideal results:

Image

This type of route was not common, however something about metal 2 pins produces the message: "[INFO DRT-1000] Pin not in any guide. Attempting to patch guides to cover (at least part of) the pin." Isolating the pins to M1 had the best results, but despite that the pins are on grid the warnings persist. The design optimizes placement fairly quickly for the GCD circuit (12-15 optimization attempts) with occasional DRC violations. With another PDK that only has three metal layers, I could recreate the errors by limiting the routing layers to M1 and M2. With access to all three, no warnings were produced. I think this could be a bug with only having two metal layers accessible to the tool. Some insight as to why this particular warning is asserted and if there are ways to mitigate them would also be appreciated.

Expected Behavior

No strange routes with no warnings.

Environment

OpenROAD v2.0-13893-gf0cc0ee1a 
Features included (+) or not (-): +Charts +GPU +GUI +Python
This program is licensed under the BSD-3 license. See the LICENSE file for details.
Components of this program may be licensed under more restrictive licenses which must be honored.

[WARNING] Your current OpenROAD version is outdated.
It is recommened to pull the latest changes.
If problem persists, file a github issue with the re-producible test case.
kernel: Linux 6.8.0-52-generic
os: Ubuntu 22.04.5 LTS (Jammy Jellyfish)
cmake version 3.25.1
-- The CXX compiler identification is GNU 11.4.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: v2.0-13893-gf0cc0ee1a
-- System name: Linux
-- Compiler: GNU 11.4.0
-- Build type: RELEASE
-- Install prefix: /usr/local
-- C++ Standard: 17
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- The C compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Python: /usr/bin/python3.10 (found version "3.10.12") found components: Interpreter 
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- 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 - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow - Success
-- 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 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register - Failed
-- 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 -CMake Warning at src/CMakeLists.txt:245 (message):
  spdlog: SPDLOG_FMT_EXTERNAL=ON


CMake Error at src/stt/CMakeLists.txt:38 (find_package):
  Could not find a package configuration file provided by "LEMON" with any of
  the following names:

    LEMONConfig.cmake
    lemon-config.cmake
    lemonConfig.cmake
    lemon-config.cmake

  Add the installation prefix of "LEMON" to CMAKE_PREFIX_PATH or set
  "LEMON_DIR" to a directory containing one of the above files.  If "LEMON"
  provides a separate development package or SDK, be sure it has been
  installed.


 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 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Failed
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive - Failed
-- 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: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- TCL readline library: /usr/lib/x86_64-linux-gnu/libtclreadline.so
-- TCL readline header: /usr/include/x86_64-linux-gnu
-- Found SWIG: /usr/bin/swig4.0 (found suitable version "4.0.2", minimum required is "4.0")  
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found version "1.74.0")  
-- boost: 1.74.0
-- Found Python3: /usr/include/python3.10 (found version "3.10.12") found components: Development Development.Module Development.Embed 
-- Found ZLIB: /home/stock/OpenROAD-flow-scripts/dependencies/lib/libz.a (found version "1.2.11") 
-- spdlog: 1.9.2
-- Found BISON: /usr/bin/bison (found version "3.8.2") 
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- STA version: 2.5.0
-- STA git sha: b71b48ad16590ea7fa144790a2f7ab2ab3d24640
-- System name: Linux
-- Compiler: GNU 11.4.0
-- Build type: RELEASE
-- Build CXX_FLAGS: -O3 -DNDEBUG
-- Install prefix: /usr/local
-- Found FLEX: /usr/bin/flex (found version "2.6.4") 
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- SSTA: 0
-- Found SWIG: /usr/bin/swig4.0 (found suitable version "4.0.2", minimum required is "3.0")  
-- STA executable: /home/stock/OpenROAD-flow-scripts/tools/OpenROAD/src/sta/app/sta
-- Configuring incomplete, errors occurred!

To Reproduce

detail_route_gcd_sky130hd_base_2025-02-13_14-40.tar.gz
The design took a long time to route and had a lot of DRC errors, but it was the only way I could reproduce a similar set of warnings with a different PDK. The only change to this setup should be that the routing layers are being limited to li1 through met1.

Relevant log output

[WARNING DRT-0225] _059_ 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _069_ 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _079_ 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _090_ 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _096_ 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _120_ 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _136_ 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _147_ 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _148_ 3 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _196_ 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _198_ 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] _201_ 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] dpath.a_lt_b$in0\[0\] 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] dpath.a_lt_b$in1\[14\] 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] dpath.a_lt_b$in1\[1\] 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] dpath.a_lt_b$in1\[8\] 3 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] net36 33 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] net38 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] net50 1 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] clknet_2_0__leaf_clk 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] clknet_2_1__leaf_clk 2 pin not visited, fall back to feedthrough mode.
[WARNING DRT-0225] clknet_2_2__leaf_clk 5 pin not visited, fall back to feedthrough mode.

Screenshots

No response

Additional Context

No response

@maliberty
Copy link
Member

Two layer processes are from a different area where channel routing was common. Its possible you might get OR to work but it is quite uncertain. I wouldn't add the extra m2 pin shape if it isn't strictly needed. The tool can add vias as required.

@maliberty maliberty added the drt Detailed Routing label Feb 14, 2025
@maliberty
Copy link
Member

Given the unusual PDK this will be a lower priority.

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

No branches or pull requests

3 participants