OpenROAD-flow-scripts
OpenROAD-flow-scripts copied to clipboard
The region created for routing obstruction is not working.
Subject
[Stage]: Detail Router.
Describe the bug
After detailed placement stage, I executed my TCL script to create routing obstruction regions, like this:
And here is my obs.tcl:
puts "creat routing obstruction region"
set block [ord::get_db_block]
set units [$block getDefUnits]
set layer [[ord::get_db_tech] findLayer BUMP_LAYER]
puts "find layer!"
set N1 [$block findInst "N1"]
set N1_xmin [[$N1 getBBox] xMin]
set N1_ymin [[$N1 getBBox] yMin]
set A4 [$block findInst "A4"]
set A4_xmax [[$A4 getBBox] xMax]
set A4_ymax [[$A4 getBBox] yMax]
set o1xl [expr $N1_xmin/$units]
set o1yl [expr $N1_ymin/$units]
set o1xr [expr $A4_xmax/$units]
set o1yh [expr $A4_ymax/$units]
puts "Obstruction region1: $o1xl $o1yl $o1xr $o1yh"
odb::dbObstruction_create $block $layer $o1xl $o1yl $o1xr $o1yh
odb::dbBlockage_create $block $o1xl $o1yl $o1xr $o1yh
set N8 [$block findInst "N8"]
set N8_xmin [[$N8 getBBox] xMin]
set N8_ymin [[$N8 getBBox] yMin]
set A11 [$block findInst "A11"]
set A11_xmax [[$A11 getBBox] xMax]
set A11_ymax [[$A11 getBBox] yMax]
set o2xl [expr $N8_xmin/$units]
set o2yl [expr $N8_ymin/$units]
set o2xr [expr $A11_xmax/$units]
set o2yh [expr $A11_ymax/$units]
puts "Obstruction region1: $o2xl $o2yl $o2xr $o2yh"
odb::dbObstruction_create $block $layer $o2xl $o2yl $o2xr $o2yh
odb::dbBlockage_create $block $o2xl $o2yl $o2xr $o2yh
set _RESET_n_ [$block findInst "_RESET_n_"]
set _RESET_n__xmin [[$_RESET_n_ getBBox] xMin]
set _RESET_n__ymin [[$_RESET_n_ getBBox] yMin]
set _DQS_t_ [$block findInst "_DQS_t_"]
set _DQS_t__xmax [[$_DQS_t_ getBBox] xMax]
set _DQS_t__ymax [[$_DQS_t_ getBBox] yMax]
set o3xl [expr $_RESET_n__xmin/$units]
set o3yl [expr $_RESET_n__ymin/$units]
set o3xr [expr $_DQS_t__xmax/$units]
set o3yh [expr $_DQS_t__ymax/$units]
puts "Obstruction region1: $o3xl $o3yl $o3xr $o3yh"
odb::dbObstruction_create $block $layer $o3xl $o3yl $o3xr $o3yh
odb::dbBlockage_create $block $o3xl $o3yl $o3xr $o3yh
puts "Finish obstruction region setting"
The intention was to prevent routing from passing through these specific areas. However, I've noticed that the final routing still passes through them. Here is the final layout image. The region I highlighted (approximately in the red box) should restrict routing on a particular layer, but it currently has routing traces passing through it.
Could you please help me investigate if the odb::dbObstruction_create command is functioning as intended?
Expected Behavior
The region I highlighted (approximately in the red box) should restrict routing on a particular layer, but it currently has routing traces passing through it.
Environment
⦗OSS CAD Suite⦘ root@server1:/OpenRoad-flow-scripts/tools/OpenROAD# ./etc/Env.sh
Unknown git commit, this is not a git repository.
Please make sure that you have the latest code changes and add the commit
hash in the description.
kernel: Linux 3.10.0-1160.76.1.el7.x86_64
os: Ubuntu 22.04 (Jammy Jellyfish)
cmake version 3.24.2
CMake Warning at CMakeLists.txt:106 (message):
OpenROAD git describe failed, using sha1 instead
-- 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: 76c4043faaceb03e28fdbaf63fdb29db91d13210
-- 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
-- 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 - 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-liCMake Warning (dev) at src/sta/CMakeLists.txt:32 (option):
Policy CMP0077 is not set: option() honors normal variables. Run "cmake
--help-policy CMP0077" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
For compatibility with older versions of CMake, option is clearing the
normal variable 'USE_TCL_READLINE'.
This warning is for project developers. Use -Wno-dev to suppress it.
teral
-- 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/local/bin/swig (found suitable version "4.1.0", minimum required is "4.0")
-- Using SWIG >= 4.1.0 -flatstaticmethod flag for python
-- Found Boost: /usr/local/lib/cmake/Boost-1.80.0/BoostConfig.cmake (found version "1.80.0")
-- boost: 1.80.0
-- Found GTest: /usr/local/lib/cmake/GTest/GTestConfig.cmake (found version "1.13.0")
-- GTest: 1.13.0
-- Found Python3: /home/dependency/oss-cad-suite/include/python3.11 (found version "3.11.6") found components: Development Development.Module Development.Embed
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Found Threads: TRUE
-- spdlog: 1.8.1
-- Found BISON: /usr/bin/bison (found version "3.8.2")
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- STA version: 2.6.0
-- STA git sha: b5f3a02b33b8ae1739ace8a329fde94434711dd6
-- 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
-- TCL readline library: /usr/lib/x86_64-linux-gnu/libtclreadline.so
-- TCL readline header: /usr/include/x86_64-linux-gnu/tclreadline.h
-- CUDD library: /usr/local/lib/libcudd.a
-- CUDD header: /usr/local/include/cudd.h
-- SSTA: 0
-- Found SWIG: /usr/local/bin/swig (found suitable version "4.1.0", minimum required is "3.0")
-- STA executable: /OpenRoad-flow-scripts/tools/OpenROAD/src/sta/app/sta
-- Found re2: /opt/or-tools/lib/cmake/re2/re2Config.cmake (found version "11.0.0")
-- Found Clp: /opt/or-tools/lib/cmake/Clp/ClpConfig.cmake (found version "1.17.7")
-- Found Cbc: /opt/or-tools/lib/cmake/Cbc/CbcConfig.cmake (found version "2.10.7")
-- Found SCIP: /opt/or-tools/lib/cmake/scip/scip-config.cmake (found version "9.0.0")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found OR-Tools: /opt/or-tools/lib/cmake/ortools (version: 9.10.4067)
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Found OpenMP_C: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- GUI is enabled
-- Charts widget is enabled
-- Found Boost: /usr/local/lib/cmake/Boost-1.80.0/BoostConfig.cmake (found version "1.80.0") found components: serialization
-- Could NOT find VTune (missing: VTune_LINumber of processor cores: 104
CMake Warning at src/CMakeLists.txt:314 (add_executable):
Cannot generate a safe runtime search path for target openroad because
files in some directories may conflict with libraries in implicit
directories:
runtime library [libtcl8.6.so] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
runtime library [libQt5Widgets.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
runtime library [libQt5Gui.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
runtime library [libQt5Core.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
runtime library [libEGL.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
runtime library [libGL.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
Some of these libraries may not be found correctly.
CMake Warning at src/odb/src/swig/python/CMakeLists.txt:28 (add_executable):
Cannot generate a safe runtime search path for target odb_py-bin because
files in some directories may conflict with libraries in implicit
directories:
runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
runtime library [libtcl8.6.so] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/dependency/oss-cad-suite/lib
Some of these libraries may not be found correctly.
BRARIES VTune_INCLUDE_DIRS)
-- Found Boost: /usr/local/lib/cmake/Boost-1.80.0/BoostConfig.cmake (found suitable version "1.80.0", minimum required is "1.78")
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Found Boost: /usr/local/lib/cmake/Boost-1.80.0/BoostConfig.cmake (found version "1.80.0") found components: serialization system thread
-- Found Boost: /usr/local/lib/cmake/Boost-1.80.0/BoostConfig.cmake (found version "1.80.0")
-- Found Eigen3: /usr/local/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.1")
-- TCL readline enabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/tmp.q482EQPoi0
To Reproduce
Since my design is relatively simple, involving only basic routing tasks without the need to consider PDN or filler cell insertion, I proceeded with the detail_route_issue. The layout image displayed is the 5_2_route.odb generated after detail routing
detail_route_bump_grad_20250906_2025-09-07_14-40.tar.gz
Relevant log output
Screenshots
No response
Additional Context
No response