Matt Venn
09/24/2021, 11:33 AMMatt Venn
09/24/2021, 11:33 AMMatt Venn
09/24/2021, 11:33 AMMatt Venn
09/24/2021, 11:35 AMMatt Venn
09/24/2021, 11:38 AMMatt Venn
09/24/2021, 11:38 AMMatt Venn
09/24/2021, 11:38 AMBooshan
09/25/2021, 4:19 AMDIE_AREA
is given as:
"Specific die area to be used in floorplanning. Specified as a 4-corner rectangle. Units in mm
(Default: unset)"
But in the README.md
file (here: https://github.com/efabless/OpenLane/blob/master/configuration/README.md), it is given as:
"Specific die area to be used in floorplanning. Specified as a 4-corner rectangle "x0 y0 x1 y1". Units in um
(Default: unset)"
I think that the explanation in the README.md
file is right. If this could be resolved on the readthedocs website, it would be helpful.Dhayalakumar M
09/26/2021, 9:04 AMNate Young
09/27/2021, 4:36 AMpin_order.cfg
file (either my own or by uncommenting the line in the config for spm which uses such a file), floorplanning crashes and in floorplan/4-place_io_ol.log
I get:
Traceback (most recent call last):
File "/openLANE_flow/scripts/io_place.py", line 288, in <module>
origin, count, step = odb.new_int(0), odb.new_int(0), odb.new_int(0)
AttributeError: module 'odb' has no attribute 'new_int'
Is this something I'm doing wrong, or a problem with my installation, or a bug in openlane, or...? I have no issues compiling spm when I allow the pin order to be randomly assigned.GitHub
09/27/2021, 6:04 AMsudo make test
I'm getting an error.
Environment
• Operating System Information: Ubuntu 18.04.6
• Docker Version: 20.10.8, build 3967b7d
• OpenLane Tag in use: 2021.08.23_04.04.57
Reproduction Material
As I am trying to setup the environment for the first time, I followed the steps mentioned in the documentation.
git clone <https://github.com/efabless/openlane.git>
cd openlane/
make openlane
make pdk
make test
Logs
akash@akash-lenovo:~/openlane$ sudo make pdk
.
.
Magic 8.3 revision 183 - Compiled on Thu Jul 1 10:06:54 UTC 2021.
Starting magic under Tcl interpreter
Using the terminal as the console.
Using NULL graphics device.
Processing system .magicrc file
Sourcing design .magicrc for technology sky130A ...
2 Magic internal units = 1 Lambda
Input style sky130(vendor): scaleFactor=2, multiplier=2
Scaled tech values by 2 / 1 to match internal grid scaling
Loading sky130A Device Generator Menu ...
Using technology "sky130A", version 1.0.225-0-g6c05bc4
CIF input style is now "sky130(vendor)"
Annotating cells from CDL/SPICE
Writing all magic database files
Writing '(UNNAMED)'
Must specify name for cell (UNNAMED).
Done.
Error message output from magic:
Can't write file named '(UNNAMED)'
Migrating LEF files to layout.
Warning: No LEF files found in /home/akash/openlane/pdks/open_pdks/sky130/sky130A/libs.ref/sky130_sram_macros/lef
make[2]: Leaving directory `/home/akash/openlane/pdks/open_pdks/sky130'
if test "x" != "x" ; then \
echo "Building OSU 12-track-high standard cell library" ;\
make osu-t12-a ;\
fi
if test "x" != "x" ; then \
echo "Building OSU 15-track-high standard cell library" ;\
make osu-t15-a ;\
fi
if test "x" != "x" ; then \
echo "Building OSU 18-track-high standard cell library" ;\
make osu-t18-a ;\
fi
make[1]: Leaving directory `/home/akash/openlane/pdks/open_pdks/sky130'
echo "Ended sky130A PDK staging on "`date` >> sky130A_make.log
echo "Starting SKY130 PDK migration on "`date` > sky130A_install.log
../common/staging_install.py -std_format \
-source /home/akash/openlane/pdks/open_pdks/sky130/sky130A \
-target /home/akash/openlane/pdks/sky130A \
-variable PDKPATH \
-link_from none 2>&1 | tee -a sky130A_install.log
Installing in target directory /home/akash/openlane/pdks/sky130A
Removing files from target
Copying staging files to target
Done.
Changing local path references from /home/akash/openlane/pdks/open_pdks/sky130/sky130A to /home/akash/openlane/pdks/sky130A
Part 1: Tools
xcircuit (1 substitution)
Failure to read file /home/akash/openlane/pdks/sky130A/libs.tech/xschem/decred_hash_macro/decred_hash_macro.v; non-ASCII content.
xschem (1 substitution)
qflow (16 substitutions)
Failure to read file /home/akash/openlane/pdks/sky130A/libs.tech/klayout/sky130A.drc; non-ASCII content.
Failure to read file /home/akash/openlane/pdks/sky130A/libs.tech/klayout/sky130A.lydrc; non-ASCII content.
magic (2 substitutions)
Part 2: Libraries
sky130_sram_macros
sky130_fd_io
mag (1 substitution)
maglef (1 substitution)
sky130_fd_pr
mag (1 substitution)
maglef (1 substitution)
sky130_ml_xx_hd
sky130_fd_sc_hd
mag (1 substitution)
maglef (1 substitution)
sky130_fd_sc_hvl
mag (1 substitution)
maglef (1 substitution)
Removing temporary files from destination.
Done with PDK migration.
echo "Ended SKY130 PDK migration on "`date` >> sky130A_install.log
set -f ; ../common/foundry_install.py -std_format -target /home/akash/openlane/pdks/open_pdks/sky130/sky130A -clean
Done removing staging area.
touch /home/akash/openlane/pdks/sky130A/SOURCES
OPENLANE_COMMIT=
echo -ne "openlane " > /home/akash/openlane/pdks/sky130A/SOURCES
cd /home/akash/openlane && git rev-parse HEAD >> /home/akash/openlane/pdks/sky130A/SOURCES
echo -ne "skywater-pdk " >> /home/akash/openlane/pdks/sky130A/SOURCES
cd /home/akash/openlane/pdks/skywater-pdk && git rev-parse HEAD >> /home/akash/openlane/pdks/sky130A/SOURCES
echo -ne "open_pdks " >> /home/akash/openlane/pdks/sky130A/SOURCES
cd /home/akash/openlane/pdks/open_pdks && git rev-parse HEAD >> /home/akash/openlane/pdks/sky130A/SOURCES
This command runs successfully. But the next command sudo make test
gives error. Please find the log below:
```
akash@akash-lenovo:~/openlane$ sudo make test
[sudo] password for akash:
cd /home/akash/openlane && \
docker run --rm -v /home/akash/openlane:/openLANE_flow -v /home/akash/openlane/pdks:/home/akash/openlane/pdks -e PDK_ROOT=/home/akash/openlane/pdks --user 0:0 efabless/openlane:2021.08.23_04.04.57 sh -c "./flow.tcl -design spm -tag openlane_test -disable_output -overwrite"
[INFO]:
_ __ _ __ _ __ __ _
/ \ | \ / _]| \ | | / || \ / _]
| | | o ) [_ | _ || | | o || _ | / [_
| O | | _/ _]| | || |___ | || | || _]
| | | | | [_ | | || || _ || | || [_
\___/ |__| |_____||__|__||_____||__|__||__|__||_____|
[INFO]: Version: 2021.08.23_04.04.57-36-g675ad11
[WARNING]: The version of magic installed in the environment does not match the one required by the OpenLane flow scripts (installed: 958d6f16701c1ee25e27440381b5c2c37b5fee7c, expected: 0bb6ac1fa98b5371c73156b6e876925397fb7cbc)
The version of openroad_app installed in the environment does not match the one required by the OpenLane flow scripts (installed: f0e6c04818f120fcd15c29735a398d3cd420bd78, expected: fb8ae93b6c7a5eb0e6fac83360a8a48d76c41885)
The version of open_pdks installed in the environment does not match the one required by the OpenLane flow scripts (installed: 13e0611f6a27fd6e601f8fe207773233f4f3883f, expected: 6c05bc48dc88784f9d98b89d6791cdfd91526676)
child process exited abnormally
[WARNING]: OpenLane may not function properly.
[INFO]: Running non-interactively
[INFO]: Using design configuration at /openLANE_flow/designs/spm/config.tcl
[INFO]: Sourcing Configurations from /openLANE_flow/designs/spm/config.tcl
[INFO]: PDKs root directory: /home/akash/openlane/pdks
[INFO]: PDK: sky130A
[INFO]: Setting PDKPATH to /home/akash/openlane/pdks/sky130A
[INFO]: Standard Cell Library: sky130_fd_sc_hd
[INFO]: Optimization Standard Cell Library is set to: sky130_fd_sc_hd
[INFO]: Sourcing Configurations from /openLANE_flow/designs/spm/config.tcl
[INFO]: Current run directory is /openLANE_flow/designs/spm/runs/openlane_test
[INFO]: Preparing LEF Files
[INFO]: Extracting the number of available metal layers from /home/akash/openlane/pdks/sky130A/libs.ref/sky130_fd_sc_hd/techlef/sky130_fd_sc_hd.tlef
[INFO]: The number of available metal layers is 6
[INFO]: The available metal layers are li1 met1 met2 met3 met4 met5
[INFO]: Merging LEF Files...
[INFO]: Trimming Liberty...
[INFO]: Generating Exclude List...
[INFO]: Storing configs into config.tcl ...
[INFO]: Preparation complete
[INFO]: Running Synthesis...
[INFO]: current step index: 1
[INFO]: Changing netlist from 0 to /openLANE_flow/designs/spm/runs/openlane_test/results/synthesis/spm.synthesis.v
[INFO]: Running Static Timing Analysis...
[INFO]: current step index: 2
[INFO]: Synthesis was successful
[INFO]: Running Floorplanning...
[INFO]: Running Initial Floorplanning...
[INFO]: current step index: 3
[INFO]: Core area width: 81.42
[INFO]: Core area height: 81.60000000000001
[WARNING]: Current core area is too small for a power grid
[WARNING]: !!! THE POWER GRID WILL BE MINIMIZED. !!!
[INFO]: Final Vertical PDN Offset: 13.57
[INFO]: Final Horizontal PDN Offset: 13.600000000000001
[INFO]: Final Vertical PDN Pitch: 27.14
[INFO]: Final Horizontal PDN Pitch: 27.200000000000003
[INFO]: Changing layout from 0 to /openLANE_flow/designs/spm/runs/openlane_test/tmp/floorplan/3-verilo…
The-OpenROAD-Project/OpenLaneGitHub
09/27/2021, 8:23 AMGitHub
09/27/2021, 12:36 PMuname -a
Ubuntu 20.04
• Docker Version: docker --version
20.10.8, build 3967b7d
• OpenLane Tag in use: python3 ./dependencies/get_tag.py
in the main OpenLane directory. 2021.09.23_03.17.13
Reproduction Material
• Find the below link to download source files. riscv_core.zip
https://github.com/The-OpenROAD-Project/OpenLane/files/7236267/riscv_core.zip
• List the commands used to run the design. Inside Openlane directory
$make mount
$./flow.tcl -design riscv_core
Expected behavior
Lesser run time and complete the flow without routing violations error.
Logs
[INFO DRT-0195] Start 64th optimization iteration.
Completing 10% with 2730 violations.
elapsed time = 00:00:00, memory = 1852.12 (MB).
Completing 20% with 2730 violations.
elapsed time = 00:00:00, memory = 1852.12 (MB).
Completing 30% with 2730 violations.
elapsed time = 01:37:23, memory = 1853.10 (MB).
Completing 40% with 2730 violations.
elapsed time = 01:37:23, memory = 1853.10 (MB).
Completing 50% with 2730 violations.
elapsed time = 02:43:34, memory = 1857.18 (MB).
Completing 60% with 2730 violations.
elapsed time = 02:43:34, memory = 1857.18 (MB).
Completing 70% with 2730 violations.
elapsed time = 03:50:20, memory = 1903.84 (MB).
Completing 80% with 2729 violations.
elapsed time = 04:11:09, memory = 1881.82 (MB).
Completing 90% with 2729 violations.
elapsed time = 04:23:58, memory = 1881.82 (MB).
Completing 100% with 2729 violations.
elapsed time = 05:54:39, memory = 1904.20 (MB).
[INFO DRT-0199] Number of violations = 2729.
[INFO DRT-0267] cpu time = 09:06:27, elapsed time = 05:54:40, memory = 1907.05 (MB), peak = 2180.31 (MB)
Total wire length = 1694629 um.
Total wire length on LAYER li1 = 5222 um.
Total wire length on LAYER met1 = 552779 um.
Total wire length on LAYER met2 = 670121 um.
Total wire length on LAYER met3 = 314029 um.
Total wire length on LAYER met4 = 152476 um.
Total wire length on LAYER met5 = 0 um.
Total number of vias = 255777.
Up-via summary (total 255777):.
-------------------------
FR_MASTERSLICE 0
li1 96314
met1 123816
met2 26633
met3 9014
met4 0
-------------------------
255777
[INFO DRT-0198] Complete detail routing.
Total wire length = 1694629 um.
Total wire length on LAYER li1 = 5222 um.
Total wire length on LAYER met1 = 552779 um.
Total wire length on LAYER met2 = 670121 um.
Total wire length on LAYER met3 = 314029 um.
Total wire length on LAYER met4 = 152476 um.
Total wire length on LAYER met5 = 0 um.
Total number of vias = 255777.
Up-via summary (total 255777):.
-------------------------
FR_MASTERSLICE 0
li1 96314
met1 123816
met2 26633
met3 9014
met4 0
-------------------------
255777
[INFO DRT-0267] cpu time = 106:10:41, elapsed time = 64:43:54, memory = 1907.05 (MB), peak = 2180.31 (MB)
[INFO DRT-0180] Post processing.
Saving to /openLANE_flow/designs/riscv_core/runs/MHSep24R3/results/routing/19-riscv_core.def
[ERROR]: There are violations in the design after detailed routing.
[ERROR]: Total Number of violations is 2729
[INFO]: Calculating Runtime From the Start...
[INFO]: flow failed for riscv_core/24-09_16-00 in 64h55m19s
The-OpenROAD-Project/OpenLaneGitHub
09/28/2021, 1:19 AMGeorgios T
09/28/2021, 2:45 AMplacement/13-opendp.log:[WARNING DPL-0018] detailed placement failed on input1.
<repeats>
...
placement/13-opendp.log:[WARNING DPL-0004] Placed in rows check failed (129).
placement/13-opendp.log:[WARNING DPL-0005] Overlap check failed (106).
placement/13-opendp.log:[WARNING DPL-0006] Site aligned check failed (187).
GitHub
09/28/2021, 11:34 AM_PATH
postfix in the name of the variable which they should.
1. From a consistency stand point there should not be some variables that point to paths that have _PATH
postfix and others that do not (which is the case right now)
2. From a usability stand point the configuration file serves as an interfacing mechanism between openlane and the user, the user in this case might just be another tool. If there are any processing that needs to be done on the paths (relative vs absolute paths, or other types of resolution) before passing them to openlane, there are not any way to do them automatically (figuring out which variables represent a path and which do not) without manually specifying each variable that represents a path
How it would work in code:
if 'PATH' in configuration_var_name: # this is for sure a path that I might or might not need to resolve
An example of an issue: SOME_VAR_NAME: "somevalue"
This "somevalue"
might just be a directory that is relative to where the configuration file resides and it might be something that has a string as its value. This means that a simple check if the path exists or not in the filesystem does not work (because the same name could be a directory and it could also be a string value, a good example would be a directory named after the design_name, it could be referencing the relative path to the directory and it could be referencing the design_name)
Proposal
Add _PATH
postfix to all configuration variables that store the path of a file or a directory
Alternatives
No alternative comes to mind
The-OpenROAD-Project/OpenLaneGitHub
09/28/2021, 4:58 PM../../../file.gds
this will be resolved during runtime in relation to where the flow.tcl script was called from (not where the flow.tcl actually resides)
To overcome this shortcoming most of the tcl configuration scripts follow the awkward convention of grabbing the configuration file's absolute path and prepending it to the beginning of a path like this:
set script_dir [file dirname [file normalize [info script]]]
set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro.cfg
This does not take into account the configuration using JSON format because JSON does not have the ability to reference the containing directory (or any execution specific values), it is simply raw data(which is what a configuration file should be).
The-OpenROAD-Project/OpenLaneMatt Venn
09/29/2021, 2:29 PMMatt Venn
09/29/2021, 2:30 PMMatt Venn
09/29/2021, 2:30 PMMatt Venn
09/29/2021, 2:30 PMMatt Venn
09/29/2021, 2:30 PMMatt Venn
09/29/2021, 2:31 PMdonn
09/29/2021, 2:31 PMdonn
09/29/2021, 2:31 PMdonn
09/29/2021, 2:32 PMMatt Venn
09/29/2021, 2:33 PMMatt Venn
09/29/2021, 2:46 PMMatt Venn
09/29/2021, 2:46 PMMohammad Khalique Khan
09/29/2021, 4:05 PM