OR not honouring AREA from techlef in route
Describe the bug
I create a layout with ORFS using platform SG13G2. In the TECHLEF the AREA parameter is set for Metal2, however, when I create a layout I have DRC errors on Metal2 due to metal area too small.
Insg13g2_tech.lef the following is contained (I have manually added the MINSIZE setting to test, but it makes no difference):
LAYER Metal2
TYPE ROUTING ;
DIRECTION HORIZONTAL ;
PITCH 0.42 ;
OFFSET 0.0 ;
WIDTH 0.20 ;
MAXWIDTH 30 ;
MINIMUMDENSITY 35.0 ;
MAXIMUMDENSITY 60.0 ;
DENSITYCHECKSTEP 100 ;
DENSITYCHECKWINDOW 200 200 ;
SPACINGTABLE
PARALLELRUNLENGTH 0.00 1.00 10.00
WIDTH 0.00 0.21 0.21 0.21
WIDTH 0.39 0.21 0.24 0.24
WIDTH 10.0 0.21 0.24 0.60 ;
MINIMUMCUT 2 WIDTH 1.4 ;
AREA 0.144 ;
MINSIZE 0.2 0.72 ;
HEIGHT 1.880 ;
#CURRENTDEN 0 ;
THICKNESS 0.450 ;
ANTENNACUMAREARATIO 200 ;
ANTENNACUMDIFFAREARATIO PWL ( ( 0 200 ) ( 0.159 200 ) ( 0.16 3200 ) ( 100 2000000 ) ) ;
WIREEXTENSION 0.10 ;
RESISTANCE RPERSQ 0.103 ;
CAPACITANCE CPERSQDIST 1.81E-05 ;
EDGECAPACITANCE 4.47E-05 ;
DCCURRENTDENSITY AVERAGE 2 ;
END Metal2
Expected Behavior
No Metal2 structures smaller than specificed by AREA should be present in the layout (but it is).
Environment
[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.6.22-linuxkit
os: Ubuntu 22.04.4 LTS (Jammy Jellyfish)
cmake version 3.22.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-12608-g50753a4c5
-- 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
-- Looking for pthread.h
-- Looking for pthread.h - found
-- 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-foCMake Warning at src/CMakeLists.txt:245 (message):
spdlog: SPDLOG_FMT_EXTERNAL=ON
rmat
-- 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 - 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/aarch64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- TCL readline library: /usr/lib/aarch64-linux-gnu/libtclreadline.so
-- TCL readline header: /usr/include/aarch64-linux-gnu
-- Found SWIG: /usr/bin/swig4.0 (found suitable version "4.0.2", minimum required is "4.0")
-- Found Boost: /usr/local/lib/cmake/Boost-1.82.0/BoostConfig.cmake (found version "1.82.0")
-- boost: 1.82.0
-- Found Python3: /usr/include/python3.10 (found version "3.10.12") found components: Development Development.Module Development.Embed
-- Found ZLIB: /usr/lib/aarch64-linux-gnu/libz.so (found version "1.2.11")
-- spdlog: 1.9.2
-- Found BISON: /usr/bin/bison (found version "3.8.2")
-- Found Doxygen: /usr/bin/doxygen (found version "1.9.1") found components: doxygen dot
-- STA version: 2.5.0
-- STA git sha: 073ff2e8c8c5469996fed1236f801b0b14064b0c
-- 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/aarch64-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: /foss/designs/OpenROAD-flow-scripts/tools/OpenROAD/src/sta/app/sta
-- Found Clp: /usr/local/lib/cmake/Clp/ClpConfig.cmake (found version "1.17.7")
-- Found Cbc: /usr/local/lib/cmake/Cbc/CbcConfig.cmake (found version "2.10.7")
-- Found SCIP: /usr/local/lib/cmake/scip/scip-config.cmake (found version "8.0.3")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- GPU is not enabled
-- TCL library: /usr/lib/aarch64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- GUI is enabled
-- Charts widget is not enabled
-- Found Boost: /usr/local/lib/cmake/Boost-1.82.0/BoostConfig.cmake (found version "1.82.0") found components: serialization
-- Could NOT find VTune (missing: VTune_LIBRARIES VTune_INCLUDE_DIRS)
-- Found Boost: /usr/local/lib/cmake/Boost-1.82.0/BoostConfig.cmake (found suitable version "1.82.0", minimum required is "1.78")
-- TCL library: /usr/lib/aarch64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Found Boost: /usr/local/lib/cmake/Boost-1.82.0/BoostConfig.cmake (found version "1.82.0") found components: serialization system thread
-- Found Boost: /usr/local/lib/cmake/Boost-1.82.0/BoostConfig.cmake (found version "1.82.0")
-- Found Eigen3: /usr/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.0")
-- TCL readline enabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/tmp.d7cBdqDSgl
To Reproduce
Build one of the stock examples for SG13G2 in ORFS.
Relevant log output
No response
Screenshots
No response
Additional Context
No response
Maybe this is related, not sure: https://github.com/The-OpenROAD-Project/OpenROAD/pull/4419
How are you checking the DRCs?
Is it possible to provide the test case?
You can use the stock example gcd of ORFS by setting in the Makefile:
DESIGN_CONFIG=./designs/ihp-sg13g2/gcd/config.mk
In the resulting 6_final.gds you can find at x=62.664um/y=138.08um a Metal2 rectangle of size 0.675um x 0.2um, clearly violating min. area of 0.144um2.
I have checked the DRC of my GDS files using the closed-source version of the SG13G2 PDK and a commercial tool. The open-source KLayout DRC deck I did not use.
Hi All, I have reproduced it locally and these are my observations:
- there is nothing at the location
x=62.664um/y=138.08um - I have no DRC's related to min area on metal2 using DRC rule deck of Klayout (maybe not implemented yet)
- I found some Metal2 strips shown on the picture where the metallization is made of two rectangles and the total size fulfils area rule
0.144 = 0.72*0.2
Interesting, maybe you use a newer OpenROAD version and the issue has been solved meanwhile? @KrzysztofHerman which OR version are you using?
openroad -v gives me this:
ab5b1ab82e84a85c7d42fb5018de5dbb17d45af8
Nevertheless I recently have re-bulit the ORFS so the version should be a brand new one.
Please find attached the 6_final.gds.gz
6_final.gds.gz
Version ab5b1ab82e84a85c7d42fb5018de5dbb17d45af8 is a commit from ca. 2024-04-11.
I have version 0889970d1790a2617e69f253221b8bd7626e51dc, which is from 2024-02-18, so quite a bit older.
So far the theory holds that there was an issue which has been solved meanwhile. I will try a newer build and see how it goes.
I just checked with latest OR version, the issue is still there (at least I have found a few errors in my examples).
@hpretl Could you check with the latest master? A recent update that addresses this issue was merged.
@osamahammad21 I tested the latest OR release. The situation is much better, but there are still a few min.area violations left.
@hpretl Could you share the remaining min area violations?
There was another bug that led to ignoring some violations related to patching. This is fixed now. @hpretl You should give it a try now, I feel it will be solved. Since there is no reply on this issue for more than 2 weeks, I will close it now. Feel free to re-open if you still find the same issue not solved.