OpenLane icon indicating copy to clipboard operation
OpenLane copied to clipboard

mcon layer issue in Sky130 PDK causing no ap std::runtime_error

Open peijunh opened this issue 4 years ago • 17 comments

Description

Hello. I am using OpenLane to run my design. I use to way to determine the size of my design, one is to use the following config to set the size of it manually. For the running result, you can refer to the log titled with "The log for self defined FP_SIZING". The rebuild material is called opentitan_soc_top_fp_sizing_absolute.zip

set ::env(FP_SIZING) absolute set ::env(DESIGN_IS_CORE) "1" set ::env(DIE_AREA) "0 0 1000 1000" set ::env(CORE_AREA) "50 50 950 950"

I then comment the AIE_AREA, CORE_AREA and use the default setting, which set the FP_CORE_UTIL to 50. But the result give me this error: [ERROR GRT-0118] Routing congestion too high, as you can see in the log titled with "The log for FP_CORE_UTIL = 50". The rebuild material is called "opentitan_soc_top_util_50.zip"

Then I set FP_CORE_UTIL to 30 to see if I can lower the congestion. you can see in the log titled with "The log for FP_CORE_UTIL = 30". The rebuild material is called "opentitan_soc_top_util_30.zip"

Environment

  • Operating System Information: uname -a centos7
  • Docker Version: docker --version Docker version 20.10.8, build 3967b7d
    • If you're using an alternative container service, please also include this information.
  • OpenLane Tag in use: python3 ./dependencies/get_tag.py in the main OpenLane directory. 2021.09.09_03.00.48

Reproduction Material

  • Upload a tarball containing the relevant design.

opentitan_soc_top_util_50.zip opentitan_soc_top_fp_sizing_absolute.zip opentitan_soc_top_util_30.zip

  • List the commands used to run the design:

sudo make mount ./flow -design opentitan_soc

Expected behavior

A clear and concise description of what you expected to happen: Successfully run through the whole flow in non_interactive mode

Logs

The log for self defined FP_SIZING


[INFO GRT-0101] Running extra iterations to remove overflow.
[WARNING GRT-0164] Initial grid wrong y1 x1 [87 21], net start [99 106] routelen 19.
[WARNING GRT-0165] End grid wrong y2 x2 [87 21], net start [100 124] routelen 19.
[ERROR GRT-0167] Invalid 2D tree for net periph_switch/u_s1n_10/tl_t_o\[38\].
Error: or_resizer_routing_timing.tcl, 46 GRT-0167
[ERROR]: during executing: "openroad -exit /openLANE_flow/scripts/openroad/or_resizer_routing_timing.tcl |& tee >&@stdout /openLANE_flow/designs/opentitan_soc/runs/19-09_16-05/logs/placement/15-resizer_timing.log"
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
child process exited abnormally

[ERROR]: Please check openroad  log file
[ERROR]: Dumping to /openLANE_flow/designs/opentitan_soc/runs/19-09_16-05/error.log
[INFO]: Calculating Runtime From the Start...
[INFO]: flow failed for opentitan_soc_top/19-09_16-05 in 0h3m52s
[INFO]: Generating Final Summary Report...
[INFO]: Design Name: opentitan_soc_top
Run Directory: /openLANE_flow/designs/opentitan_soc/runs/19-09_16-05
Source not found.
----------------------------------------

LVS Summary:
Source: /openLANE_flow/designs/opentitan_soc/runs/19-09_16-05/results/lvs/opentitan_soc_top.lvs_parsed.gds.log
Source not found.
----------------------------------------

Antenna Summary:
No antenna report found.
[INFO]: check full report here: /openLANE_flow/designs/opentitan_soc/runs/19-09_16-05/reports/final_summary_report.csv
[INFO]: Saving Runtime Environment
[ERROR]: Flow Failed.

    while executing
"try_catch $::env(OPENROAD_BIN) -exit $::env(SCRIPTS_DIR)/openroad/or_resizer_routing_timing.tcl |& tee $::env(TERMINAL_OUTPUT) [index_file $::env(resi..."
    (procedure "run_resizer_timing_routing" line 13)
    invoked from within
"run_resizer_timing_routing"
    (procedure "run_routing" line 9)
    invoked from within
"run_routing"
    (procedure "run_routing_step" line 10)
    invoked from within
"[lindex $step_exe 0] [lindex $step_exe 1] "
    (procedure "run_non_interactive_mode" line 43)
    invoked from within
"run_non_interactive_mode {*}$argv"
    invoked from within
"if { [info exists flags_map(-interactive)] || [info exists flags_map(-it)] } {
        puts_info "Running interactively"
        if { [info exists arg_values(-file)..."
    (file "./flow.tcl" line 354)

The log for FP_CORE_UTIL = 50

[INFO GRT-0101] Running extra iterations to remove overflow.
[INFO GRT-0103] Extra Run for hard benchmark.
[INFO GRT-0104] Minimal overflow 203998 occurring at round 10.
[INFO GRT-0111] Final number of vias: 286272
[INFO GRT-0112] Final usage 3D: 1573464
[WARNING GRT-0211] dbGcellGrid already exists in db. Clearing existing dbGCellGrid.
[ERROR GRT-0118] Routing congestion too high.
Error: or_resizer_routing_timing.tcl, 46 GRT-0118
[ERROR]: during executing: "openroad -exit /openLANE_flow/scripts/openroad/or_resizer_routing_timing.tcl |& tee >&@stdout /openLANE_flow/designs/opentitan_soc/runs/19-09_15-43/logs/placement/15-resizer_timing.log"
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
child process exited abnormally

[ERROR]: Please check openroad  log file
[ERROR]: Dumping to /openLANE_flow/designs/opentitan_soc/runs/19-09_15-43/error.log
[INFO]: Calculating Runtime From the Start...
[INFO]: flow failed for opentitan_soc_top/19-09_15-43 in 0h10m35s
[INFO]: Generating Final Summary Report...
[INFO]: Design Name: opentitan_soc_top
Run Directory: /openLANE_flow/designs/opentitan_soc/runs/19-09_15-43
Source not found.
----------------------------------------

LVS Summary:
Source: /openLANE_flow/designs/opentitan_soc/runs/19-09_15-43/results/lvs/opentitan_soc_top.lvs_parsed.gds.log
Source not found.
----------------------------------------

Antenna Summary:
No antenna report found.
[INFO]: check full report here: /openLANE_flow/designs/opentitan_soc/runs/19-09_15-43/reports/final_summary_report.csv
[INFO]: Saving Runtime Environment
[ERROR]: Flow Failed.

    while executing
"try_catch $::env(OPENROAD_BIN) -exit $::env(SCRIPTS_DIR)/openroad/or_resizer_routing_timing.tcl |& tee $::env(TERMINAL_OUTPUT) [index_file $::env(resi..."
    (procedure "run_resizer_timing_routing" line 13)
    invoked from within
"run_resizer_timing_routing"
    (procedure "run_routing" line 9)
    invoked from within
"run_routing"
    (procedure "run_routing_step" line 10)
    invoked from within
"[lindex $step_exe 0] [lindex $step_exe 1] "
    (procedure "run_non_interactive_mode" line 43)
    invoked from within
"run_non_interactive_mode {*}$argv"
    invoked from within
"if { [info exists flags_map(-interactive)] || [info exists flags_map(-it)] } {
        puts_info "Running interactively"
        if { [info exists arg_values(-file)..."
    (file "./flow.tcl" line 354)

The log for FP_CORE_UTIL = 30

[INFO GRT-0101] Running extra iterations to remove overflow.
[INFO GRT-0103] Extra Run for hard benchmark.
[WARNING GRT-0165] End grid wrong y2 x2 [29 37], net start [28 41] routelen 5.
[ERROR GRT-0167] Invalid 2D tree for net clknet_1_0_1_clk_i.
Error: or_resizer_routing_timing.tcl, 46 GRT-0167
[ERROR]: during executing: "openroad -exit /openLANE_flow/scripts/openroad/or_resizer_routing_timing.tcl |& tee >&@stdout /openLANE_flow/designs/opentitan_soc/runs/19-09_15-22/logs/placement/15-resizer_timing.log"
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
child process exited abnormally

[ERROR]: Please check openroad  log file
[ERROR]: Dumping to /openLANE_flow/designs/opentitan_soc/runs/19-09_15-22/error.log
[INFO]: Calculating Runtime From the Start...
[INFO]: flow failed for opentitan_soc_top/19-09_15-22 in 0h15m42s
[INFO]: Generating Final Summary Report...
[INFO]: Design Name: opentitan_soc_top
Run Directory: /openLANE_flow/designs/opentitan_soc/runs/19-09_15-22
Source not found.
----------------------------------------

LVS Summary:
Source: /openLANE_flow/designs/opentitan_soc/runs/19-09_15-22/results/lvs/opentitan_soc_top.lvs_parsed.gds.log
Source not found.
----------------------------------------

LVS Summary:
Source: /openLANE_flow/designs/opentitan_soc/runs/19-09_15-22/results/lvs/opentitan_soc_top.lvs_parsed.gds.log
Source not found.
----------------------------------------

Antenna Summary:
No antenna report found.
[INFO]: check full report here: /openLANE_flow/designs/opentitan_soc/runs/19-09_15-22/reports/final_summary_report.csv
[INFO]: Saving Runtime Environment
[ERROR]: Flow Failed.

    while executing
"try_catch $::env(OPENROAD_BIN) -exit $::env(SCRIPTS_DIR)/openroad/or_resizer_routing_timing.tcl |& tee $::env(TERMINAL_OUTPUT) [index_file $::env(resi..."
    (procedure "run_resizer_timing_routing" line 13)
    invoked from within
"run_resizer_timing_routing"
    (procedure "run_routing" line 9)
    invoked from within
"run_routing"
    (procedure "run_routing_step" line 10)
    invoked from within
"[lindex $step_exe 0] [lindex $step_exe 1] "
    (procedure "run_non_interactive_mode" line 43)
    invoked from within
"run_non_interactive_mode {*}$argv"
    invoked from within
"if { [info exists flags_map(-interactive)] || [info exists flags_map(-it)] } {
        puts_info "Running interactively"
        if { [info exists arg_values(-file)..."
    (file "./flow.tcl" line 354)

peijunh avatar Sep 19 '21 06:09 peijunh

  1. Issue template
  2. Please link the design

donn avatar Sep 19 '21 08:09 donn

I just link the design and update the template @donn . Please check if I need to do anything else

peijunh avatar Sep 19 '21 16:09 peijunh

@peijunh You can turn off the resizer timing optimization by setting set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) 0 in your config.tcl and try once. Your log ''' [WARNING GRT-0211] dbGcellGrid already exists in db. Clearing existing dbGCellGrid. [ERROR GRT-0118] Routing congestion too high. Error: or_resizer_routing_timing.tcl, 46 GRT-0118 [ERROR]: during executing: "openroad -exit /openLANE_flow/scripts/openroad/or_resizer_routing_timing.tcl |& tee >&@stdout /openLANE_flow/designs/opentitan_soc/runs/19-09_15-43/logs/placement/15-resizer_timing.log" [ERROR]: Exit code: 1 ''' says congestion too high. Try increase with Die area as well and placement density value

vijayank88 avatar Sep 20 '21 05:09 vijayank88

@vijayank88 Thanks for your help. I set :env(GLB_RESIZER_TIMING_OPTIMIZATIONS) to 0. I try to set PL_TARGET_DENSITY as 0.7, 0.55(default), 0.4, 0.35, but they all give me routing congestion too high. So may I ask what else I should set?

peijunh avatar Sep 20 '21 17:09 peijunh

Looks like setting the PL_TARGET_DENSITY to 0.2 will help to the congestion problem. But there is problem in the triton route

[INFO DRT-0076]   Complete 100 pins.
[INFO DRT-0076]   Complete 200 pins.
[INFO DRT-0076]   Complete 300 pins.
[INFO DRT-0076]   Complete 400 pins.
[ERROR DRT-0073] No ap for periph_switch/u_s1n_10/DP_OP_12J5_122_1926/U14/A.
terminate called after throwing an instance of 'std::runtime_error'
  what():  DRT-0073
[ERROR]: during executing: "openroad -exit /openLANE_flow/scripts/openroad/or_droute.tcl |& tee >&@stdout /openLANE_flow/designs/opentitan_soc/runs/20-09_20-26/logs/routing/19-tritonRoute.log"
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
child killed: SIGABRT

[ERROR]: Please check openroad  log file
[ERROR]: Dumping to /openLANE_flow/designs/opentitan_soc/runs/20-09_20-26/error.log
[INFO]: Calculating Runtime From the Start...
[INFO]: flow failed for opentitan_soc_top/20-09_20-26 in 0h4m35s
[INFO]: Generating Final Summary Report...
[INFO]: Design Name: opentitan_soc_top
Run Directory: /openLANE_flow/designs/opentitan_soc/runs/20-09_20-26
Source not found.
----------------------------------------

LVS Summary:
Source: /openLANE_flow/designs/opentitan_soc/runs/20-09_20-26/results/lvs/opentitan_soc_top.lvs_parsed.gds.log
Source not found.
----------------------------------------

Antenna Summary:
No antenna report found.
[INFO]: check full report here: /openLANE_flow/designs/opentitan_soc/runs/20-09_20-26/reports/final_summary_report.csv
[INFO]: Saving Runtime Environment
[ERROR]: Flow Failed.

    while executing
"try_catch $::env(OPENROAD_BIN) -exit $::env(SCRIPTS_DIR)/openroad/or_droute.tcl |& tee $::env(TERMINAL_OUTPUT) [index_file $::env(tritonRoute_log_file..."
    (procedure "detailed_routing_tritonroute" line 6)
    invoked from within
"detailed_routing_tritonroute"
    (procedure "detailed_routing" line 13)
    invoked from within
"detailed_routing"
    (procedure "run_routing" line 49)
    invoked from within
"run_routing"
    (procedure "run_routing_step" line 10)
    invoked from within
"[lindex $step_exe 0] [lindex $step_exe 1] "
    (procedure "run_non_interactive_mode" line 43)
    invoked from within
"run_non_interactive_mode {*}$argv"
    invoked from within
"if { [info exists flags_map(-interactive)] || [info exists flags_map(-it)] } {
        puts_info "Running interactively"
        if { [info exists arg_values(-file)..."
    (file "./flow.tcl" line 354)

peijunh avatar Sep 20 '21 20:09 peijunh

We'll look into it.

donn avatar Sep 22 '21 10:09 donn

Okay, you've only included a def file and a config script. I need the actual RTL design files.

donn avatar Sep 23 '21 11:09 donn

Hi, attached is the compressed file of my design, you can directly put it under openLANE_flow/design/ and run I think. I use the netlist that is flattened by yosys because there are too many source RTL. opentitan_soc.tar.gz

peijunh avatar Sep 23 '21 15:09 peijunh

@donn Hello, may I ask do you have any chance to look into this? Thanks.

peijunh avatar Sep 28 '21 20:09 peijunh

Yeah I'm. Getting more or less the same errors. I'll have to try again after updating OpenROAD.

donn avatar Sep 29 '21 02:09 donn

@donn Have you been able to try this with latest of OpenROAD?

msaligane avatar Oct 02 '21 03:10 msaligane

Have you?

donn avatar Oct 04 '21 14:10 donn

I am assuming OL is pointing to the latest OR? so @peijunh please try again I guess.

msaligane avatar Oct 04 '21 14:10 msaligane

Yup.

donn avatar Oct 04 '21 14:10 donn

I clone OpenLane and build it from scratch. My commit now is shown below.

commit 27752ec11a12afa3214f64401662683f081e2644
Author: Openlane Bot <[email protected]>
Date:   Wed Sep 29 22:03:01 2021 +0200

    [BOT] Update openroad_app (#616)

    openroad_app -> 7f23e5f6e6b8d36e6a8aaed6ad074902ea27c4ce

I run the flow again and get the following error.

[INFO DRT-0165] Start pin access.
[INFO DRT-0076]   Complete 100 pins.
[INFO DRT-0076]   Complete 200 pins.
[INFO DRT-0076]   Complete 300 pins.
[INFO DRT-0076]   Complete 400 pins.
[INFO DRT-0076]   Complete 500 pins.
[ERROR DRT-0073] No ap for periph_switch/u_s1n_10/DP_OP_12J5_122_1926/U11/A.
terminate called after throwing an instance of 'std::runtime_error'
  what():  DRT-0073
[ERROR]: during executing: "openroad -exit /openLANE_flow/scripts/openroad/or_droute.tcl |& tee >&@stdout /openLANE_flow/designs/opentitan_soc/runs/04-10_16-42/logs/routing/23-tritonRoute.log"
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
child killed: SIGABRT

[ERROR]: Please check openroad  log file
[ERROR]: Dumping to /openLANE_flow/designs/opentitan_soc/runs/04-10_16-42/error.log
[INFO]: Calculating Runtime From the Start...
[INFO]: flow failed for opentitan_soc_top/04-10_16-42 in 0h10m36s
[INFO]: Generating Final Summary Report...
[INFO]: Design Name: opentitan_soc_top
Run Directory: /openLANE_flow/designs/opentitan_soc/runs/04-10_16-42
Source not found.
----------------------------------------

LVS Summary:
Source: /openLANE_flow/designs/opentitan_soc/runs/04-10_16-42/results/lvs/opentitan_soc_top.lvs_parsed.gds.log
Source not found.
----------------------------------------

Antenna Summary:
No antenna report found.
[INFO]: check full report here: /openLANE_flow/designs/opentitan_soc/runs/04-10_16-42/reports/final_summary_report.csv
[INFO]: Saving Runtime Environment
[ERROR]: Flow Failed.

I am not sure why there is such and error, so I go to OpenLane/docker_build/docker/openroad_app/Dockerfile and find that at line 118 the commit is not the newest.

117 ARG OPENROAD_APP_REPO=https://github.com/The-OpenROAD-Project/OpenROAD
118 ARG OPENROAD_APP_COMMIT=4d4d7205fd0292dbf3fae55fad9109b3f0bd5786

May I ask how to fix this issue?

peijunh avatar Oct 04 '21 17:10 peijunh

Thanks @peijunh I think it is failing in detail route now. I think it says that there are no access pins for this pin: periph_switch/u_s1n_10/DP_OP_12J5_122_1926/U11/A

Can you check what instance is that? and check versus the LEF we have used in MPW-II ? Also, maybe share your test case.

I am tagging @maliberty (just fyi)

msaligane avatar Oct 04 '21 17:10 msaligane

This is the design file

opentitan_soc.tar.gz

peijunh avatar Oct 04 '21 17:10 peijunh

Staled out- please file a new issue if the problem persists.

donn avatar Aug 30 '22 10:08 donn