-
|
I'm writing to summarize the environment setup challenges I encountered while building OpenROAD-flow-scripts (ORFS) locally, and Environment
The pre-built Docker image (openroad/orfs) crashes at the CTS stage with: Root cause: The Docker image binaries are compiled with AVX-512 instructions, but the i9-14900K has AVX-512 disabled by default due to its hybrid architecture (E-cores don't support AVX-512, so Intel fuses it off to allow thread migration between P-cores and E-cores). Since Docker runs binaries directly on the host CPU without instruction translation, any AVX-512 instruction causes a SIGILL.
The OpenROAD dependency installer installs SWIG 4.3.0, which is required to avoid linker errors (multiple definition of SwigString_FromString etc. with SWIG 4.0.2). However, SWIG 4.3.0 generates code using Tcl_Size, a type introduced in Tcl 9.x, while the system provides Tcl 8.6. This results in compilation errors across ~50 SWIG interface (.i) files: Some .i files (e.g., StaTclTypes.i, tclCmdInputWidget.h) already have compatibility typedefs, but the majority do not. This required patching approximately 50 files under tools/OpenROAD/src/. With this fix and SWIG 4.3.0, the build completes successfully. Current Status After all the above fixes, the full RTL-to-GDS flow runs successfully on the default gcd design with nangate45:
Questions regarding Bazel I noticed that the README recommends Bazel as an option for building ORFS, while the BuildLocally.md documentation marks it as
Bazel's hermetic build approach would be ideal for avoiding the dependency issues described above, so I'd like to understand whether it's a viable path forward. Regarding a Dockerfile for non-AVX-512 environments Since the official Docker image assumes AVX-512 support, which is unavailable on Intel 12th gen+ consumer CPUs, would it be helpful if I contributed a Dockerfile that builds from source without AVX-512 dependency? I can provide one based on my current working local build environment, which could serve as a reference for others with similar hardware. Please let me know if this would be a welcome contribution to the project. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
|
@vvbandeira please advise on the docker image |
Beta Was this translation helpful? Give feedback.
-
|
The bazel build builds with tcl 8.6.16 currently (which already has the |
Beta Was this translation helpful? Give feedback.
The bazel build builds with tcl 8.6.16 currently (which already has the
Tcl_Sizechange; about to switch to tcl 9 so that we can pack related files in a zipfs) and uses swig 4.3 (I also made an effort to make things compile with older than 8.6.13 versions of Tcl).So yes, bazel comes with all batteries included to successfully compile tcl and won't rely on any local tcl version.