Where should I report reproducible segfaults in th...
# openlane
p
Where should I report reproducible segfaults in the OpenRoad parts of OpenLane?
a
p
a
@Philipp Gühring: You probably have to isolate the testcase to: 1. RePlace inputs. 2. RePlace script. 3. Output error. Otherwise, you can open it on the openlane side, and we'll do this isolation and report it in the OpenROAD repository.
p
Could we do that together? Could we automate that isolation?
"make isolate_replace"
Or have openlane create bugreports itself upon crashes?
a
@Philipp Gühring: Open an issue on openlane and we'll handle it from there.
p
Could it be that I stumbled accross this bug again? https://github.com/The-OpenROAD-Project/RePlAce/issues/70
Yes, it seems that the old "replace" version (1 year old!) is the problem. Even the openlane develop branch still has an old version. Could you replace that version with a newer replace version please?
a
@Philipp Gühring: I sadly wasn't able to figure out what's the issue so far. But, someone gave a comprehensive reply that might help here: https://github.com/efabless/openlane/issues/101#issuecomment-732726986 Also, we're not using this replace version. We use the one inside the openroad_app which is almost up-to-date. However, we keep this 1-year-old version on the side because it proved useful in some interactive scripts.
p
I am currently working on the sizes, they were missing in our LEF files.
@Amr Gouhar I added the sizes to the LEF files now and scaled them correctly, and now the crash is gone and I get another error instead: http://pdk.libresilicon.com/caravel-build5.html
I pushed the changed files to my repository
a
@Philipp Gühring: Which version of OpenLANE are you using? Because there is a different solution for this in develop compared to master.
p
I have switched to develop
a
@Philipp Gühring: Great, can you try adding this:
Copy code
set ::env(PL_RANDOM_GLB_PLACEMENT) 1
to your configuration file, hopefully it should help.
p
I just tried to add that in my configuration, but it didnt changed anything, I still got the [ERROR] RePlAce diverged at initial iteration. Please tune the parameters again (REPL-5) error.
Now I updated openlane with git pull and got a new error much earlier:
1. Executing Liberty frontend. Imported 428 cell types from liberty file. 2. Executing Liberty frontend. ERROR: Syntax error in liberty file on line 29. Unexpected newline. [ERROR]: during executing: "yosys -c /openLANE_flow/scripts/synth.tcl -l /project/openlane/user_proj_example/runs/user_proj_example/logs/synthesis/yosys.log |& tee >&@stdout" [ERROR]: Exit code: 1
a
how did the liberty get changed..
Okay, let me try this
p
I have no idea, do you want to take a look remotely?
a
However, for the replace diverged error the solution is usually manipulating these parameters:
Copy code
set ::env(PL_TARGET_DENSITY) 0.55
set ::env(PL_RANDOM_GLB_PLACEMENT) 0
set ::env(PL_BASIC_PLACEMENT) 0
set ::env(PL_SKIP_INITIAL_PLACEMENT) 0
I'll try to run your project locally and tell you what I find. Maybe something went wrong with the build due to an internet issue or something.
p
Which liberty file does the error message refer to? Is there an easy way to see which files are actually used by each step?
a
@Philipp Gühring: usually it is, I'm not sure why yosys is not saying which liberty it's reading like it does with the verilog files..
p
Wait a moment, perhaps I installed both openlane r4 and develop and I am using r4 instead of develop
Ok, I found the problem in my liberty file.
This seems to be a regression in yosys to me: It complains about code like this:
index_1 ( "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" );
And when you format it on a single line it works:
index_1 ( "1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
Yosys 0.9+2406 (git sha1 f313211c, clang 10.0.0-4ubuntu1 -fPIC -Os),
a
@Philipp Gühring: this is a strange bug. However, it seems to start showing up after this commit: https://github.com/efabless/openlane/commit/6b6a3a20ae0b2e08b92c0cca38d4aa376748ce2a
p
Hmm, perhaps the nested for() are clashing with the $_ variable? I usually define different iterator variables for nested for loops