Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault in one of OpenLane's steps (or_replace.tcl) #754

Closed
progirep opened this issue Dec 9, 2021 · 15 comments
Closed

Segfault in one of OpenLane's steps (or_replace.tcl) #754

progirep opened this issue Dec 9, 2021 · 15 comments
Labels
blocked This issue is blocked on a bugfix or enhancement of another repository or tool bug Something isn't working OpenROAD An issue with an OpenROAD component

Comments

@progirep
Copy link

progirep commented Dec 9, 2021

Description

I'm getting a segfault in one of OpenLane's steps, but can't see what a possible reason for this could be (sorry, I don't "speak" TCL nor do I use docker for my own work - I'm only doing a few assembler styles, C, C++, Python, Java, some HDL, and CS Theory).

The project on which the problem occurs is a test project for integrating OpenRAM blocks into a design - it is a shortened version of the project at https://github.com/VLSIDA/openram_testchip.git using only two SRAM blocks.

Environment

The problem occurs both with the mpw-3a version of the workflow as well as with the "latest" (b911a5bbbcaa) version of the OpenLane docker images (selected by changing the respective lines in the files "Makefile" and "openlane/Makefile"). In the case of the "latest" version latter case, the gds.gz files in the gds/ directory of the project need to be gunzipped for the flow to reach the segfault. Also, when using the "latest" version, there is a warning for me that the PDK version is then not the right one - not sure if this is relevant because the segfault is the same.

Python: v3.8.10
Kernel: Linux v5.4.0-91-generic
Distribution: ubuntu 20.04
Container Engine: docker v20.10.7
OpenLane Git Version: 2021.10.25_20.35.00
---
PDK Version Verification Status: OK

---
Git Log (Last 5 Commits)

commit e8f4a88f668b366f126bba40861153bf478a33c1
Author: Donn <[email protected]>
Date:   Mon Oct 25 20:32:41 2021 +0200

    Last Minute Fixes for MPW3 (#675)

Reproduction Material

Github doesn't let me upload the project as a tar.gz file or a .zip file with the message "is not included in the list". Maybe it is too large. So I've committed the project as a project to github at: https://github.com/progirep/openram_testchip/tree/8ae25c1d4a85146cf2a7d277da1f87e1234a4b85

The following zip file is just a dummy to be able to submit the issue anyway:

The command to run is simply:

make user_project_wrapper

from the project directory.

Expected behavior

The workflow should not segfault. The project I'm trying to run it on may be wrong in some aspects, but right now it's not possible for me to tell because of the segfault.

Logs

...[stuff that seems to work]....
[INFO GRT-0104] Minimal overflow 1 occurring at round 0.
[INFO GRT-0111] Final number of vias: 3700
[INFO GRT-0112] Final usage 3D: 89696
*** Error in `openroad': corrupted double-linked list: 0x0000000014d8d870 ***
======= Backtrace: =========
/lib64/libc.so.
[test.zip](https://github.com/The-OpenROAD-Project/OpenLane/files/7683839/test.zip)
6(+0x7f3e4)[0x7f47d70043e4]
/lib64/libc.so.6(+0x82ba8)[0x7f47d7007ba8]
/lib64/libc.so.6(__libc_malloc+0x4c)[0x7f47d700a6fc]
/lib64/libstdc++.so.6(_Znwm+0x1d)[0x7f47d78ca18d]
openroad[0xc3ac4b]
openroad[0x10293e2]
openroad[0x102afd9]
openroad[0xc349ab]
openroad[0xc38e6a]
openroad[0x51d454]
openroad[0x4fad98]
openroad[0x525ad1]
/lib64/libtcl8.5.so(+0x34eb2)[0x7f47d892feb2]
/lib64/libtcl8.5.so(+0x7936c)[0x7f47d897436c]
/lib64/libtcl8.5.so(+0x81647)[0x7f47d897c647]
/lib64/libtcl8.5.so(TclEvalObjEx+0x87)[0x7f47d89316b7]
/lib64/libtcl8.5.so(+0xbc27f)[0x7f47d89b727f]
/lib64/libtcl8.5.so(+0x34eb2)[0x7f47d892feb2]
/lib64/libtcl8.5.so(+0x7936c)[0x7f47d897436c]
/lib64/libtcl8.5.so(+0x81647)[0x7f47d897c647]
/lib64/libtcl8.5.so(TclEvalObjEx+0x87)[0x7f47d89316b7]
/lib64/libtcl8.5.so(+0x3c1d0)[0x7f47d89371d0]
/lib64/libtcl8.5.so(+0x34eb2)[0x7f47d892feb2]
/lib64/libtcl8.5.so(+0x7936c)[0x7f47d897436c]
/lib64/libtcl8.5.so(+0x81647)[0x7f47d897c647]
/lib64/libtcl8.5.so(TclEvalObjEx+0x87)[0x7f47d89316b7]
/lib64/libtcl8.5.so(+0x3ff00)[0x7f47d893af00]
/lib64/libtcl8.5.so(+0x34eb2)[0x7f47d892feb2]
/lib64/libtcl8.5.so(+0x7936c)[0x7f47d897436c]
/lib64/libtcl8.5.so(TclObjInterpProcCore+0x34d)[0x7f47d89b7a4d]
/lib64/libtcl8.5.so(+0x34eb2)[0x7f47d892feb2]
/lib64/libtcl8.5.so(+0x7936c)[0x7f47d897436c]
/lib64/libtcl8.5.so(TclObjInterpProcCore+0x34d)[0x7f47d89b7a4d]
/lib64/libtcl8.5.so(+0x34eb2)[0x7f47d892feb2]
/lib64/libtcl8.5.so(+0x35f1e)[0x7f47d8930f1e]
/lib64/libtcl8.5.so(Tcl_EvalEx+0x16)[0x7f47d8931446]
/lib64/libtcl8.5.so(Tcl_Eval+0x15)[0x7f47d8931465]
openroad[0x66946f]
openroad[0x4dbfc3]
/lib64/libtcl8.5.so(Tcl_Main+0x1e5)[0x7f47d899f475]
openroad[0x4cbdc1]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f47d6fa7555]
openroad[0x4d9097]
======= Memory map: ========
00400000-0267e000 r-xp 00000000 00:37 7425961                            /build/bin/openroad
0287e000-02888000 r--p 0227e000 00:37 7425961                            /build/bin/openroad
02888000-028cc000 rw-p 02288000 00:37 7425961                            /build/bin/openroad
028cc000-028ee000 rw-p 00000000 00:00 0 
02d38000-23b16000 rw-p 00000000 00:00 0                                  [heap]
7f47cc000000-7f47cc021000 rw-p 00000000 00:00 0 
7f47cc021000-7f47d0000000 ---p 00000000 00:00 0 
7f47d1792000-7f47d2684000 rw-p 00000000 00:00 0 
7f47d4589000-7f47d458a000 ---p 00000000 00:00 0 
7f47d458a000-7f47d4e0a000 rw-p 00000000 00:00 0 
7f47d4f4a000-7f47d4f8a000 rw-p 00000000 00:00 0 
7f47d520a000-7f47d524a000 rw-p 00000000 00:00 0 
7f47d528a000-7f47d52ca000 rw-p 00000000 00:00 0 
7f47d53e1000-7f47d580d000 rw-p 00000000 00:00 0 
7f47d580d000-7f47d5819000 r-xp 00000000 00:37 7345130                    /usr/lib64/libnss_files-2.17.so
7f47d5819000-7f47d5a18000 ---p 0000c000 00:37 7345130                    /usr/lib64/libnss_files-2.17.so
7f47d5a18000-7f47d5a19000 r--p 0000b000 00:37 7345130                    /usr/lib64/libnss_files-2.17.so
7f47d5a19000-7f47d5a1a000 rw-p 0000c000 00:37 7345130                    /usr/lib64/libnss_files-2.17.so
7f47d5a1a000-7f47d5ca0000 rw-p 00000000 00:00 0 
7f47d5cf6000-7f47d5d36000 rw-p 00000000 00:00 0 
7f47d5d36000-7f47d5d39000 r-xp 00000000 00:37 7411620                    /usr/lib64/python3.6/lib-dynload/_heapq.cpython-36m-x86_64-linux-gnu.so
7f47d5d39000-7f47d5f38000 ---p 00003000 00:37 7411620                    /usr/lib64/python3.6/lib-dynload/_heapq.cpython-36m-x86_64-linux-gnu.so
7f47d5f38000-7f47d5f39000 r--p 00002000 00:37 7411620                    /usr/lib64/python3.6/lib-dynload/_heapq.cpython-36m-x86_64-linux-gnu.so
7f47d5f39000-7f47d5f3b000 rw-p 00003000 00:37 7411620                    /usr/lib64/python3.6/lib-dynload/_heapq.cpython-36m-x86_64-linux-gnu.so
7f47d5f3b000-7f47d6b7e000 rw-p 00000000 00:00 0 
7f47d6b7e000-7f47d6b80000 r-xp 00000000 00:37 7345249                    /usr/lib64/libutil-2.17.so
7f47d6b80000-7f47d6d7f000 ---p 00002000 00:37 7345249                    /usr/lib64/libutil-2.17.so
7f47d6d7f000-7f47d6d80000 r--p 00001000 00:37 7345249                    /usr/lib64/libutil-2.17.so
7f47d6d80000-7f47d6d81000 rw-p 00002000 00:37 7345249                    /usr/lib64/libutil-2.17.so
7f47d6d81000-7f47d6d83000 r-xp 00000000 00:37 7345016                    /usr/lib64/libdl-2.17.so
7f47d6d83000-7f47d6f83000 ---p 00002000 00:37 7345016                    /usr/lib64/libdl-2.17.so
7f47d6f83000-7f47d6f84000 r--p 00002000 00:37 7345016                    /usr/lib64/libdl-2.17.so
7f47d6f84000-7f47d6f85000 rw-p 00003000 00:37 7345016                    /usr/lib64/libdl-2.17.so
7f47d6f85000-7f47d7149000 r-xp 00000000 00:37 7344987                    /usr/lib64/libc-2.17.so
7f47d7149000-7f47d7348000 ---p 001c4000 00:37 7344987                    /usr/lib64/libc-2.17.so
7f47d7348000-7f47d734c000 r--p 001c3000 00:37 7344987                    /usr/lib64/libc-2.17.so
7f47d734c000-7f47d734e000 rw-p 001c7000 00:37 7344987                    /usr/lib64/libc-2.17.so
7f47d734e000-7f47d7353000 rw-p 00000000 00:00 0 
7f47d7353000-7f47d7368000 r-xp 00000000 00:37 7345034                    /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f47d7368000-7f47d7567000 ---p 00015000 00:37 7345034                    /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f47d7567000-7f47d7568000 r--p 00014000 00:37 7345034                    /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f47d7568000-7f47d7569000 rw-p 00015000 00:37 7345034                    /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f47d7569000-7f47d766a000 r-xp 00000000 00:37 7345101                    /usr/lib64/libm-2.17.so
7f47d766a000-7f47d7869000 ---p 00101000 00:37 7345101                    /usr/lib64/libm-2.17.so
7f47d7869000-7f47d786a000 r--p 00100000 00:37 7345101                    /usr/lib64/libm-2.17.so
7f47d786a000-7f47d786b000 rw-p 00101000 00:37 7345101                    /usr/lib64/libm-2.17.so
7f47d786b000-7f47d7954000 r-xp 00000000 00:37 7345219                    /usr/lib64/libstdc++.so.6.0.19
7f47d7954000-7f47d7b54000 ---p 000e9000 00:37 7345219                    /usr/lib64/libstdc++.so.6.0.19
7f47d7b54000-7f47d7b5c000 r--p 000e9000 00:37 7345219                    /usr/lib64/libstdc++.so.6.0.19
7f47d7b5c000-7f47d7b5e000 rw-p 000f1000 00:37 7345219                    /usr/lib64/libstdc++.so.6.0.19
7f47d7b5e000-7f47d7b73000 rw-p 00000000 00:00 0 
7f47d7b73000-7f47d7e00000 r-xp 00000000 00:37 7409574                    /usr/lib64/libpython3.6m.so.1.0
7f47d7e00000-7f47d8000000 ---p 0028d000 00:37 7409574                    /usr/lib64/libpython3.6m.so.1.0
7f47d8000000-7f47d8003000 r--p 0028d000 00:37 7409574                    /usr/lib64/libpython3.6m.so.1.0
7f47d8003000-7f47d8069000 rw-p 00290000 00:37 7409574                    /usr/lib64/libpython3.6m.so.1.0
7f47d8069000-7f47d809b000 rw-p 00000000 00:00 0 
7f47d809b000-7f47d80c0000 r-xp 00000000 00:37 7409563                    /usr/lib64/libgomp.so.1.0.0
7f47d80c0000-7f47d82bf000 ---p 00025000 00:37 7409563                    /usr/lib64/libgomp.so.1.0.0
7f47d82bf000-7f47d82c0000 r--p 00024000 00:37 7409563                    /usr/lib64/libgomp.so.1.0.0
7f47d82c0000-7f47d82c1000 rw-p 00025000 00:37 7409563                    /usr/lib64/libgomp.so.1.0.0
7f47d82c1000-7f47d82c8000 r-xp 00000000 00:37 7345197                    /usr/lib64/librt-2.17.so
7f47d82c8000-7f47d84c7000 ---p 00007000 00:37 7345197                    /usr/lib64/librt-2.17.so
7f47d84c7000-7f47d84c8000 r--p 00006000 00:37 7345197                    /usr/lib64/librt-2.17.so
7f47d84c8000-7f47d84c9000 rw-p 00007000 00:37 7345197                    /usr/lib64/librt-2.17.so
7f47d84c9000-7f47d84de000 r-xp 00000000 00:37 7409643                    /usr/lib64/libz.so.1.2.7
7f47d84de000-7f47d86dd000 ---p 00015000 00:37 7409643                    /usr/lib64/libz.so.1.2.7
7f47d86dd000-7f47d86de000 r--p 00014000 00:37 7409643                    /usr/lib64/libz.so.1.2.7
7f47d86de000-7f47d86df000 rw-p 00015000 00:37 7409643                    /usr/lib64/libz.so.1.2.7
7f47d86df000-7f47d86f6000 r-xp 00000000 00:37 7345178                    /usr/lib64/libpthread-2.17.so
7f47d86f6000-7f47d88f5000 ---p 00017000 00:37 7345178                    /usr/lib64/libpthread-2.17.so
7f47d88f5000-7f47d88f6000 r--p 00016000 00:37 7345178                    /usr/lib64/libpthread-2.17.so
7f47d88f6000-7f47d88f7000 rw-p 00017000 00:37 7345178                    /usr/lib64/libpthread-2.17.so
7f47d88f7000-7f47d88fb000 rw-p 00000000 00:00 0 
7f47d88fb000-7f47d8a17000 r-xp 00000000 00:37 7409576                    /usr/lib64/libtcl8.5.so
7f47d8a17000-7f47d8c16000 ---p 0011c000 00:37 7409576                    /usr/lib64/libtcl8.5.so
7f47d8c16000-7f47d8c1b000 r--p 0011b000 00:37 7409576                    /usr/lib64/libtcl8.5.so
7f47d8c1b000-7f47d8c22000 rw-p 00120000 00:37 7409576                    /usr/lib64/libtcl8.5.so
7f47d8c22000-7f47d8c23000 rw-p 00000000 00:00 0 
7f47d8c23000-7f47d8c45000 r-xp 00000000 00:37 7344962                    /usr/lib64/ld-2.17.so
7f47d8c4f000-7f47d8ccf000 rw-p 00000000 00:00 0 
7f47d8cf4000-7f47d8e3d000 rw-p 00000000 00:00 0 
7f47d8e41000-7f47d8e44000 rw-p 00000000 00:00 0 
7f47d8e44000-7f47d8e45000 r--p 00021000 00:37 7344962                    /usr/lib64/ld-2.17.so
7f47d8e45000-7f47d8e46000 rw-p 00022000 00:37 7344962                    /usr/lib64/ld-2.17.so
7f47d8e46000-7f47d8e47000 rw-p 00000000 00:00 0 
7ffe35074000-7ffe350ad000 rw-p 00000000 00:00 0                          [stack]
7ffe35189000-7ffe3518c000 r--p 00000000 00:00 0                          [vvar]
7ffe3518c000-7ffe3518d000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]
[ERROR]: during executing: "openroad -exit /openlane/scripts/openroad/or_replace.tcl |& tee >&@stdout /project/openlane/user_project_wrapper/runs/user_project_wrapper/logs/placement/16-replace.log"
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
child killed: SIGABRT

[ERROR]: Please check openroad  log file
[ERROR]: Dumping to /project/openlane/user_project_wrapper/runs/user_project_wrapper/error.log
[INFO]: Calculating Runtime From the Start...
[INFO]: flow failed for user_project_wrapper/2021.12.08_23.11.01 in 0h3m12s
[INFO]: Generating Final Summary Report...
[INFO]: Design Name: user_project_wrapper
Run Directory: /project/openlane/user_project_wrapper/runs/user_project_wrapper
Source not found.
----------------------------------------

LVS Summary:
Source: /project/openlane/user_project_wrapper/runs/user_project_wrapper/results/lvs/user_project_wrapper.lvs_parsed.gds.log
Source not found.
----------------------------------------

Antenna Summary:
No antenna report found.
[INFO]: check full report here: /project/openlane/user_project_wrapper/runs/user_project_wrapper/reports/final_summary_report.csv
[INFO]: Saving Runtime Environment
invalid command name "17"
    while executing
"17"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 ${cmd}"
    (procedure "set_log" line 3)
    invoked from within
"set_log ::env($index) $escaped_env_var $::env(GLB_CFG_FILE) 1"
    (procedure "save_state" line 9)
    invoked from within
"save_state"
    (procedure "flow_fail" line 6)
    invoked from within
"flow_fail"
    (procedure "try_catch" line 25)
    invoked from within
"try_catch $::env(OPENROAD_BIN) -exit $::env(SCRIPTS_DIR)/openroad/or_replace.tcl |& tee $::env(TERMINAL_OUTPUT) [index_file $::env(replaceio_log_file_..."
    (procedure "global_placement_or" line 14)
    invoked from within
"global_placement_or"
    (procedure "run_placement" line 17)
    invoked from within
"run_placement"
    (procedure "run_placement_step" line 11)
    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 "/openlane/flow.tcl" line 356)
make[1]: *** [Makefile:43: user_project_wrapper] Error 1
make[1]: Leaving directory '/home/...(my user name and install path here).../openram_based_monitoring/openlane'
make: *** [Makefile:83: user_project_wrapper] Error 2
@vijayank88
Copy link
Collaborator

@progirep mpw-3b is right version for caravel project. Try with mpw-3b tag

@progirep
Copy link
Author

progirep commented Dec 9, 2021

@progirep mpw-3b is right version for caravel project. Try with mpw-3b tag

Thanks, I will try that and report back in ~2-8 hours.

@donn donn added bug Something isn't working OpenROAD An issue with an OpenROAD component labels Dec 9, 2021
@donn
Copy link
Collaborator

donn commented Dec 9, 2021

sorry, I don't "speak" TCL

Don't worry, this isn't Tcl. We don't require any Tcl knowledge beyond set ::env(X) {Y}. :)

@vijayank88
Copy link
Collaborator

@donn this issue reproduced with mpw-3b tag as well

@donn
Copy link
Collaborator

donn commented Dec 9, 2021

@vijayank88 Really not much I can do other than or_issue the reproducible and try it with the latest version of OpenROAD. However, I'm off this week, so that'll have to wait until Monday.

@progirep
Copy link
Author

progirep commented Dec 9, 2021

Ok, I've just checked with the "mpw-3b" version of the OpenLANE docker container. The segfault occurs as well, and the stack trace is the same up to the memory addresses (which are unlikely to be the same because of address space randomization).

The problem does not occur for the design from which my test design is forked. I'll have a look if there is something to be seen from the differences between the OpenLane warnings - in case the segfault only occurs for designs that have no chance to work anyway, there may be some useful information hidden to track down the problem.

@donn
Copy link
Collaborator

donn commented Dec 9, 2021

@progirep This failure occurs inside the OpenROAD app specifically, so there's not much we can do on our side but package the issue and pass it on to the OpenROAD team. Likely there's a corner case exposed by your design that's just not handled properly.

@maliberty
Copy link
Member

It is helpful if it can be packaged with scripts/or_issue.py

@vijayank88
Copy link
Collaborator

@progirep
follow the instruction in https://github.com/The-OpenROAD-Project/OpenLane/blob/master/docs/source/using_or_issue.md and provide tar file to resolve it

@vijayank88
Copy link
Collaborator

vijayank88 commented Dec 10, 2021

@progirep segfault error comes from openlane/Makefile.
Refer https://skywater-pdk.slack.com/archives/C016H8WJMBR/p1636840104299800?thread_ts=1636753036.268100&cid=C016H8WJMBR.
Solution is 👍
change /openLANE_flow to /openlane in openlane/Makefile

@vijayank88 vijayank88 added waiting on op Information has been requested from the Issue Author and removed bug Something isn't working OpenROAD An issue with an OpenROAD component labels Dec 10, 2021
@progirep
Copy link
Author

progirep commented Dec 11, 2021

Ok, so I've attached the tar file for reproducing the issue built according to the using_or_issue.md document:
user_project_wrapper_or_replace_packaged.tar.gz

The proposal to change the Makefile didn't work for me. It had no effect on the error. If I get it correctly, the change is for "injecting" the local OpenLane checkout from OPENLANE_ROOT into the docker container. I was using the "mpw-3a" version for that previously (which seems to be the one coming from this pull request: #675). Updating to a newer version of it leads to the whole build process failing with "[ERROR STA-0402] repair_design -slew_margin is not a known keyword or flag." - appears to be some version mismatch.

I guess that the slack link was posted for internal use because signing up requires e-mail addresses from few domains (google but not gmail, efabless, ..)

@maliberty
Copy link
Member

Your packaged testcase suggests you are using an old version of openlane. What commit are you on?

@donn donn removed the waiting on op Information has been requested from the Issue Author label Dec 13, 2021
@donn
Copy link
Collaborator

donn commented Dec 13, 2021

I can't reproduce the issue with a later version of OpenROAD. Meaning that this issue is waiting on #756.

@donn donn added blocked This issue is blocked on a bugfix or enhancement of another repository or tool bug Something isn't working OpenROAD An issue with an OpenROAD component labels Dec 13, 2021
@progirep
Copy link
Author

Thanks for testing it with a later version of OpenROAD.

I apologize for having to take back my statement that the problem occurs with the "mpw-3b" version of efabless/openlane for me as well. I only noticed today that the file "openlane/Makefile" from https://github.com/efabless/caravel-lite has the "mpw-3a" version of Openlane hardcoded, and hence the selected openlane tag in the project's own Makefile (which I got from https://github.com/VLSIDA/openram_testchip/blob/main/Makefile) does not have any effect.

When changing the caraval-lite makefile to refer to the "mpw-3b" version of efabless/openlane, the segfault indeed vanishes (with or without changing "/openLANE_flow" to "/openlane" in "openlane/Makefile" of the project).

Now I'm getting "[ERROR GRT-0229] Vertical edge usage exceeds the maximum allowed." as error message, including when using the latest master branch of openroad. But that reads like a problem with the design.

So thanks!

@donn
Copy link
Collaborator

donn commented Dec 13, 2021

No problem! Just happy we could help.

@donn donn closed this as completed Dec 13, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked This issue is blocked on a bugfix or enhancement of another repository or tool bug Something isn't working OpenROAD An issue with an OpenROAD component
Projects
None yet
Development

No branches or pull requests

4 participants