OpenROAD
OpenROAD copied to clipboard
Rocket Mini to GDSII failed at step 15
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
@Ryabkomv
openroad_issue_reproducible
attachment missing
Or share your repo link
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.
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
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
@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 can you share me git repo link, where you found this project?
@Ryabkomv can you share me git repo link, where you found this project?
https://github.com/chipsalliance/rocket-chip I used TinyConfig configuration
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
Can you share src/*.v files?
Can you share src/*.v files?
These files are already attached to the post, can you download them?
CLOCK_PORT
is clock
right?
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?
yes. I am also running at my end with changes. Will update you the status.
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.
Use ./flow.tcl -interactive
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
@maliberty Can you please look into this?
@Ryabkomv Attach latest run test case
I've made some changes in configuration, so will upload after the run will be completed. Or hopefully it will be successful.
Unfortunately got the issue at step 15. updated test case at git repository
@maliberty its failing during global routing resizer timing.
I am out this week, perhaps @luis201420 can help
@luis201420 do you had time to look into this issue?
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.
@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?
The alpha=0 is a workaround to a router problem that we are fixing. You would need it when you hit this error.
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 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
Thank, will do
@Ryabkomv updated command format