The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.65k stars 572 forks source link

Error encountered at routing stage: No access point #4015

Closed Multimuffin closed 1 year ago

Multimuffin commented 1 year ago

I am currently trying to integrate a new platform (tower) into the flow, and I am mainly referring to this tutorial. For the config.mk file in the platform directory, I simply copied the adequate file from the sky130hd platform and changed it accordingly, as seen below. I have managed to reach the routing stage in the flow, but I cannot get past the following error message:

[INFO DRT-0165] Start pin access.
[ERROR DRT-0073] No access point for input35/A.
[ERROR DRT-0073] No access point for _135_/A.
[ERROR DRT-0073] No access point for _288_/D.
[ERROR DRT-0073] No access point for _287_/D.
Error: detail_route.tcl, 70 DRT-0073
Command exited with non-zero status 1

Btw, as the input file, I have used the design example spm provided by OpenROAD.

Thanks for any help in advance; I would really appreciate it!

Expected Behavior

A fully functional flow, that gets past the routing stage.

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.2.0-31-generic
os: Ubuntu 22.04.3 LTS (Jammy Jellyfish)
cmake version 3.24.2
-- 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-10111-gb8c71cc9a
-- 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 - 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__-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/swig3.0 (found suitable version "3.0.12", minimum required is "3.0")  
-- Found Boost: /usr/local/lib/cmake/Boost-1.80.0/BoostConfig.cmake (found version "1.80.0")  
-- boost: 1.80.0
-- Found Python3: /usr/include/python3.10 (found version "3.10.12") found components: Development Development.Module Development.Embed 
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") 
-- spdlog: 1.8.1
-- Found BISON: /usr/bin/bison (found version "3.8.2") 
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- STA version: 2.4.0
-- STA git sha: 7cf916ba205115a06c4531a044ced481f1ff8f12
-- 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
-- STA executable: /home/lnstaff/tragicomix/OpenROAD-flow-scripts/tools/OpenROAD/src/sta/app/sta
-- GPU is not enabled
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Found re2: /opt/or-tools/lib/cmake/re2/re2Config.cmake (found version "9.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 Eigen3: /usr/local/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.0") 
-- Found SCIP: /opt/or-tools/lib/cmake/scip/scip-config.cmake (found version "8.0.1") 
-- GUI is enabled
-- Charts widget is not enabled
-- Found Boost: /usr/local/lib/cmake/Boost-1.80.0/BoostConfig.cmake (found version "1.80.0") found components: serialization 
-- Found OpenMP_CXX: -fopenmp (found version "4.5") 
-- Found OpenMP: TRUE (found version "4.5")  
-- Could NOT find VTune (missing: VTune_LIBRARIES 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 
-- TCL readline enabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/tmp.SsTfvmsGpg

To Reproduce

Files are listed below

Relevant log output

No response

Screenshots

No response

Additional Context

route.log

OpenROAD v2.0-10111-gb8c71cc9a 
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.
[INFO ORD-0030] Using 16 thread(s).
detailed_route arguments: -bottom_routing_layer M1 -top_routing_layer TOP_M -save_guide_updates -verbose 1 -drc_report_iter_step 5
[INFO DRT-0149] Reading tech and libs.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0140] SpacingRange unsupported.
[WARNING DRT-0160] Warning: M5 does not have viaDef aligned with layer direction, generating new viaDef TOP_V_FR.

Units:                1000
Number of layers:     13
Number of macros:     603
Number of vias:       38
Number of viarulegen: 5

[INFO DRT-0150] Reading design.

Design:                   test
Die area:                 ( 0 0 ) ( 146290 146290 )
Number of track patterns: 12
Number of DEF vias:       0
Number of components:     793
Number of terminals:      36
Number of snets:          2
Number of nets:           294

[INFO DRT-0167] List of default vias:
  Layer V2
    default via: V2_cross
  Layer V3
    default via: V3_cross
  Layer V4
    default via: V4_cross
  Layer V5
    default via: V5_cross
  Layer TOP_V
    default via: TOP_V_FR
[INFO DRT-0162] Library cell analysis.
[INFO DRT-0163] Instance analysis.
[INFO DRT-0164] Number of unique instances = 29.
[INFO DRT-0168] Init region query.
[INFO DRT-0024]   Complete GC.
[INFO DRT-0024]   Complete Fr_VIA.
[INFO DRT-0024]   Complete M1.
[INFO DRT-0024]   Complete V2.
[INFO DRT-0024]   Complete M2.
[INFO DRT-0024]   Complete V3.
[INFO DRT-0024]   Complete M3.
[INFO DRT-0024]   Complete V4.
[INFO DRT-0024]   Complete M4.
[INFO DRT-0024]   Complete V5.
[INFO DRT-0024]   Complete M5.
[INFO DRT-0024]   Complete TOP_V.
[INFO DRT-0024]   Complete TOP_M.
[INFO DRT-0033] GC shape region query size = 0.
[INFO DRT-0033] FR_VIA shape region query size = 0.
[INFO DRT-0033] M1 shape region query size = 8177.
[INFO DRT-0033] V2 shape region query size = 540.
[INFO DRT-0033] M2 shape region query size = 372.
[INFO DRT-0033] V3 shape region query size = 540.
[INFO DRT-0033] M3 shape region query size = 384.
[INFO DRT-0033] V4 shape region query size = 540.
[INFO DRT-0033] M4 shape region query size = 240.
[INFO DRT-0033] V5 shape region query size = 450.
[INFO DRT-0033] M5 shape region query size = 60.
[INFO DRT-0033] TOP_V shape region query size = 0.
[INFO DRT-0033] TOP_M shape region query size = 0.
[INFO DRT-0165] Start pin access.
[ERROR DRT-0073] No access point for input35/A.
[ERROR DRT-0073] No access point for _135_/A.
[ERROR DRT-0073] No access point for _288_/D.
[ERROR DRT-0073] No access point for _287_/D.
Error: detail_route.tcl, 70 DRT-0073
Command exited with non-zero status 1
Elapsed time: 0:01.53[h:]min:sec. CPU time: user 1.86 sys 0.09 (127%). Peak memory: 147620KB.

5_2_route.tmp.log

config.mk

# Process node
export PROCESS = 130

#-----------------------------------------------------
# Tech/Libs
# ----------------------------------------------------
export TECH_LEF = $(PLATFORM_DIR)/lef/tsl180l6.lef
export SC_LEF = $(PLATFORM_DIR)/lef/tsl18fs390svt_wb.lef

export LIB_FILES = $(PLATFORM_DIR)/lib/tsl18fs390svt_wb_tt_3p3v_25c.lib \
                     $(ADDITIONAL_LIBS)
export GDS_FILES = $(wildcard $(PLATFORM_DIR)/gds/*.gds) \
                     $(ADDITIONAL_GDS)

export DONT_USE_CELLS += 

# Define fill cells
export FILL_CELLS = FILLER_X1_33_SVT_WB FILLER_X2_33_SVT_WB FILLER_X32_33_SVT_WB FILLER_X4_33_SVT_WB FILLER_X8_33_SVT_WB

# -----------------------------------------------------
#  Yosys
#  ----------------------------------------------------
export TIEHI_CELL_AND_PORT = TIEH_33_SVT_WB HI
export TIELO_CELL_AND_PORT = TIEL_33_SVT_WB LO

export MIN_BUF_CELL_AND_PORTS = BUFT_X2_33_SVT_WB A X

# Define ABC driver and load
export ABC_DRIVER_CELL = sky130_fd_sc_hd__buf_1
export ABC_LOAD_IN_FF = 5

#--------------------------------------------------------
# Floorplan
# -------------------------------------------------------

# Placement site for core cells
# This can be found in the technology lef
export PLACE_SITE = 

# IO Placer pin layers
export IO_PLACER_H = M3
export IO_PLACER_V = M2

# Define default PDN config
export PDN_TCL ?= $(PLATFORM_DIR)/pdn.tcl

export MACRO_PLACE_HALO ?= 40 40
export MACRO_PLACE_CHANNEL ?= 80 80

#---------------------------------------------------------
# Place
# --------------------------------------------------------
# default cell padding for cells 
export CELL_PAD_IN_SITES_GLOBAL_PLACEMENT ?= 1
export CELL_PAD_IN_SITES_DETAIL_PLACEMENT ?= 0

export PLACE_DENSITY ?= 0.60

# --------------------------------------------------------
#  CTS
#  -------------------------------------------------------
# TritonCTS options
export CTS_BUF_CELL   ?= CLKBUF_X8_33_SVT_WB

# ---------------------------------------------------------
#  Route
# ---------------------------------------------------------
# FastRoute options
export MIN_ROUTING_LAYER = M1
export MAX_ROUTING_LAYER = TOP_M

# ---------------------------------------------------------
#  IR Drop
# ---------------------------------------------------------

# IR drop estimation supply net name to be analyzed and supply voltage variable
# For multiple nets: PWR_NETS_VOLTAGES  = "VDD1 1.8 VDD2 1.2"
export PWR_NETS_VOLTAGES  ?= "VDD 1.8"
export GND_NETS_VOLTAGES  ?= "VSS 0.0"
export IR_DROP_LAYER ?= M1

# DRC Check
export KLAYOUT_DRC_FILE = $(PLATFORM_DIR)/drc/$(PLATFORM).lydrc

#LVS Check
export CDL_FILE = $(PLATFORM_DIR)/cdl/$(PLATFORM).cdl
export KLAYOUT_LVS_FILE = $(PLATFORM_DIR)/lvs/$(PLATFORM).lylvs

config.mk.log

stucture of the platform folder

platform
 |-- asap7
 |--  ...
 |-- sky130ram
 +-- tower
     |-- cells_latch.v
     |-- config.mk
     |-- constraint.sdc
     |-- fastroute.sdc
     |-- gds
     |-- lef
     |-- lib
     |-- make_tracks.tcl
     |-- pdn.tcl
     |-- setRC.tcl
     +-- tapcell.tcl
vijayank88 commented 1 year ago

@Multimuffin Can you please run make gui_cts and check respective pins and its access?

Multimuffin commented 1 year ago
Screenshot 2023-09-19 at 14 44 00 Screenshot 2023-09-19 at 14 42 09 Screenshot 2023-09-19 at 14 40 12

Here are the cells and the pins that are causing the problems

maliberty commented 1 year ago

Is this a PDK that can be shared publicly? If so a test case would be helpful.

If not, you can try adding

detailed_route_debug -pa -pa_markers -pin _135_:A

to scripts/detail_route.tcl before the router is invoked. If you run with the GUI it will stop on this pin and show you all the attempted pin access and the associated drc errors. Usually that gives a good clue as to what is going wrong.

Multimuffin commented 1 year ago

Unfortunately not but I have figured out how to "solve" (or rather avoid) this issue. At first, I realized, that I forgot to adapt the values in thepdn.tcl file which caused some minor issues. But in the end, I was just adding the problematic cells to the DONT_USE_CELLS and the flow was running without any problems. In the future I will try to figure out, what the exact reason for this issue has been but right now I am just happy, that I have got the flow up and running. Nevertheless, thank you for the help, I appreciate that you are spending your time helping others