OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

Rocket Mini to GDSII failed at step 15

Open Ryabkomv opened this issue 2 years ago • 147 comments

Description

I have successfully generated GDSII file with open lane for picorv32 with configuration using docker container. However when I try to get GDSII for Rocket chip with Tiny configuration I got error at step 15.

[STEP 15]
[INFO]: Running Global Routing Resizer Timing Optimizations...
[ERROR]: during executing openroad script /openlane/scripts/openroad/resizer_routing_timing.tcl
[ERROR]: Exit code: 1
[ERROR]: full log: designs/ExampleRocketSystem/runs/RUN_2022.06.03_12.54.37/logs/routing/15-resizer.log
[ERROR]: Last 10 lines:
met2       Vertical      6182445       4937214          20.14%
met3       Horizontal    4121630       3293440          20.09%
met4       Vertical      2472978       1650582          33.26%
met5       Horizontal     824326        410880          50.16%
---------------------------------------------------------------

[INFO GRT-0101] Running extra iterations to remove overflow.
[ERROR GRT-0169] Net _0432988_: Invalid index for position (2590950, 3605250). Net degree: 6.
Error: resizer_routing_timing.tcl, 53 GRT-0169
child process exited abnormally

Googling I came to the following config.tcl

set ::env(DESIGN_NAME) ExampleRocketSystem
set ::env(FP_CORE_UTIL) 30

set ::env(CELL_PAD) 2

set ::env(PL_BASIC_PLACEMENT) 0
set ::env(PL_TARGET_DENSITY) 0.3

set ::env(GLB_RT_ADJUSTMENT) 0.2

set ::env(PL_ROUTABILITY_DRIVEN) 1

# Change if needed
set ::env(VERILOG_FILES) [glob $::env(DESIGN_DIR)/src/*.v]

# Fill this
set ::env(CLOCK_PERIOD) "10.0"
set ::env(CLOCK_PORT) "clk"

set filename $::env(DESIGN_DIR)/$::env(PDK)_$::env(STD_CELL_LIBRARY)_config.tcl
if { [file exists $filename] == 1} {
        source $filename
}

Environment

docker --version
Docker version 20.10.16, build aa7e414


Please run the following set of commands in the OpenLane folder:

python3 ./env.py issue-survey
Kernel: Linux v5.4.0-113-generic
Distribution: ubuntu 20.04
Python: v3.8.10 (OK)
Container Engine: UNKNOWN vUNKNOWN (UNSUPPORTED)
OpenLane Git Version: 2653e6e4d69c8a8270c494e2ce61cbfd151fae38
pip: INSTALLED
pip:venv: INSTALLED
---
PDK Version Verification Status: OK
---
Git Log (Last 3 Commits)

2653e6e 2022-05-25T19:27:29+02:00 Synthesis Parameters, More Report Metrics (#1105) - Arya Reais-Parsi -  (HEAD -> master, tag: 2022.05.26_01.40.55, origin/master, origin/HEAD)
4298bf2 2022-05-25T17:42:21+02:00 Remove `endcap_cpp` option from `tapcell` (#1085) - Anton Blanchard -  ()
601eede 2022-05-21T18:47:55+02:00 Support Multi-Arch Docker Builds (#1075) - Mohamed Gaber -  (tag: 2022.05.22_02.07.28)

Reproduction Material

  • Upload a tarball containing the relevant design. the used command

./flow.tcl -design ExampleRocketSystem

Expected behavior

Successful GDSII generation

src.tar.gz

openroad_issue_reproducible

Ryabkomv avatar Jun 06 '22 06:06 Ryabkomv

@Ryabkomv openroad_issue_reproducible attachment missing

Or share your repo link

vijayank88 avatar Jun 06 '22 06:06 vijayank88

Container Engine: UNKNOWN vUNKNOWN (UNSUPPORTED) Also update docker version to latest one

@Donn is possible to print issue-survey with existing container version followed by UNKNOWN message. So its easy to convey the message to user.

vijayank88 avatar Jun 06 '22 06:06 vijayank88

Added sources, and docker version

I'm not sure why I get Container Engine: UNKNOWN vUNKNOWN (UNSUPPORTED)

Docker version 20.10.16, build aa7e414 installed, also I'm able to run docker hello-word

sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:80f31da1ac7b312ba29d65080fddf797dd76acfb870e677f390d5acba9741b17
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Ryabkomv avatar Jun 06 '22 07:06 Ryabkomv

@Ryabkomv Test case attached is not valid format. designs/ExampleRocketSystem/runs/RUN_2022.06.03_12.54.37/openroad_issue_reproducible exist or not?

If not exist Please package a standalone test case with https://github.com/The-OpenROAD-Project/OpenLane/blob/master/docs/source/using_or_issue.md

vijayank88 avatar Jun 06 '22 07:06 vijayank88

@Ryabkomv Test case attached is not valid format. designs/ExampleRocketSystem/runs/RUN_2022.06.03_12.54.37/openroad_issue_reproducible exist or not?

If not exist Please package a standalone test case with https://github.com/The-OpenROAD-Project/OpenLane/blob/master/docs/source/using_or_issue.md

Added corresponding folder as an archive at github. It pretty lengthy.

Ryabkomv avatar Jun 06 '22 08:06 Ryabkomv

@Ryabkomv can you share me git repo link, where you found this project?

vijayank88 avatar Jun 06 '22 11:06 vijayank88

@Ryabkomv can you share me git repo link, where you found this project?

https://github.com/chipsalliance/rocket-chip I used TinyConfig configuration

Ryabkomv avatar Jun 06 '22 11:06 Ryabkomv

If you're using default configuration try increase FP_CORE_UTIL to 30 and try

Yes, I copied my config and FP_CORE_UTIL is already set to 30

Ryabkomv avatar Jun 06 '22 11:06 Ryabkomv

Can you share src/*.v files?

vijayank88 avatar Jun 06 '22 11:06 vijayank88

Can you share src/*.v files?

These files are already attached to the post, can you download them?

Ryabkomv avatar Jun 06 '22 11:06 Ryabkomv

CLOCK_PORT is clock right?

vijayank88 avatar Jun 06 '22 11:06 vijayank88

set ::env(CLOCK_PORT) "clk"

Should be... So you mean I need to change set ::env(CLOCK_PORT) "clk" for set ::env(CLOCK_PORT) "clock" right?

Ryabkomv avatar Jun 06 '22 11:06 Ryabkomv

yes. I am also running at my end with changes. Will update you the status.

vijayank88 avatar Jun 06 '22 11:06 vijayank88

oh, looks like a stupid mistake...I will rerun the flow with updated config file. By the way, Is there a way to run the flow step by step? Because the process is pretty time consuming, in case of failure at some stage I'm looking to make modifications in config.tcl and re-run just failed stage.

Ryabkomv avatar Jun 06 '22 12:06 Ryabkomv

Use ./flow.tcl -interactive

vijayank88 avatar Jun 06 '22 12:06 vijayank88

Still have an error at the same stage

[STEP 15]
[INFO]: Running Global Routing Resizer Timing Optimizations...
[ERROR]: during executing openroad script /openlane/scripts/openroad/resizer_routing_timing.tcl
[ERROR]: Exit code: 1
[ERROR]: full log: designs/ExampleRocketSystem/runs/RUN_2022.06.06_12.17.57/logs/routing/15-resizer.log
[ERROR]: Last 10 lines:
[INFO GRT-0101] Running extra iterations to remove overflow.
[WARNING GRT-0227] Reached 20 congestion iterations with less than 15% of reduction between iterations.
[INFO GRT-0197] Via related to pin nodes: 3749275
[INFO GRT-0198] Via related Steiner nodes: 160597
[INFO GRT-0199] Via filling finished.
[INFO GRT-0111] Final number of vias: 6224460
[INFO GRT-0112] Final usage 3D: 33535666
[ERROR GRT-0118] Routing congestion too high.
Error: resizer_routing_timing.tcl, 53 GRT-0118
child process exited abnormally

Ryabkomv avatar Jun 07 '22 11:06 Ryabkomv

@maliberty Can you please look into this?

vijayank88 avatar Jun 07 '22 13:06 vijayank88

@Ryabkomv Attach latest run test case

vijayank88 avatar Jun 07 '22 13:06 vijayank88

I've made some changes in configuration, so will upload after the run will be completed. Or hopefully it will be successful.

Ryabkomv avatar Jun 07 '22 14:06 Ryabkomv

Unfortunately got the issue at step 15. updated test case at git repository

Ryabkomv avatar Jun 08 '22 06:06 Ryabkomv

@maliberty its failing during global routing resizer timing.

vijayank88 avatar Jun 08 '22 10:06 vijayank88

I am out this week, perhaps @luis201420 can help

maliberty avatar Jun 08 '22 15:06 maliberty

@luis201420 do you had time to look into this issue?

vijayank88 avatar Jun 15 '22 07:06 vijayank88

Yes, I got the following error:

[ERROR GRT-0169] Net _0428215_: Invalid index for position (2680650, 2176950). Net degree: 5.
[ERROR GUI-0070] Error: resizer_routing_timing.tcl, 54 GRT-0169

@Ryabkomv I suggest you use the set_routing_alpha 0 command before you call global route.

luis201420 avatar Jun 15 '22 16:06 luis201420

@donn Is there any configuration available to change set_routing_alpha 0 in openlane flow?

@luis201420 what is default setting for set_routing_alpha? In which scenario we need to pass this variable?

vijayank88 avatar Jun 15 '22 16:06 vijayank88

The alpha=0 is a workaround to a router problem that we are fixing. You would need it when you hit this error.

maliberty avatar Jun 15 '22 17:06 maliberty

Thanks for suggestion. I wonder if I need to set variable in config file? What is there name of the variable? Should it looks like: set ::env(set_routing_alpha) 0 ? I cannot see such variable in this list

Ryabkomv avatar Jun 16 '22 06:06 Ryabkomv

@Ryabkomv Check for following file in your local path: https://github.com/The-OpenROAD-Project/OpenLane/blob/master/scripts/openroad/groute.tcl

In line 45 of groute.tcl add following lines and run the flow. set_routing_alpha 0

vijayank88 avatar Jun 16 '22 06:06 vijayank88

Thank, will do

Ryabkomv avatar Jun 16 '22 06:06 Ryabkomv

@Ryabkomv updated command format

vijayank88 avatar Jun 16 '22 09:06 vijayank88