The-OpenROAD-Project / OpenROAD-flow-scripts

OpenROAD's scripts implementing an RTL-to-GDS Flow. Documentation at https://openroad-flow-scripts.readthedocs.io/en/latest/
https://theopenroadproject.org/
Other
342 stars 290 forks source link

Make sure OpenROAD is built with installed dependencies #2295

Closed eszpotanski closed 2 months ago

eszpotanski commented 2 months ago

Requires https://github.com/The-OpenROAD-Project/OpenROAD/pull/5660

This PR adds option in build_openroad.sh script to enable using build arguments from file. This way, additional CMake parameters (from https://github.com/The-OpenROAD-Project/OpenROAD/pull/5660) can be used to make sure the right dependencies' versions are used and prevent errors (e.g. used incompatible version of OR-Tools from system) like:

mbff.cpp:(.text+0x1a38d): undefined reference to `operations_research::sat::CpModelProto::CpModelProto(google::protobuf::Arena*)'
/usr/bin/ld: mbff.cpp:(.text+0x1a394): undefined reference to `absl::lts_20240116::container_internal::kEmptyGroup'
/usr/bin/ld: mbff.cpp:(.text+0x1e47e): undefined reference to `absl::lts_20240116::container_internal::kEmptyGroup'
/usr/bin/ld: mbff.cpp:(.text+0x1e4cf): undefined reference to `operations_research::sat::SatParameters::SatParameters(google::protobuf::Arena*)'
collect2: error: ld returned 1 exit status
oharboe commented 2 months ago

@eszpotanski Does the user have to know about this option or does it do the correct thing by default?

An obscure option that is required to make the build work is not great, better if the option is just there to handle uncommon cases and that the build script works correctly by default.

eszpotanski commented 2 months ago

It is used by default when user follows the instructions from docs: https://openroad-flow-scripts.readthedocs.io/en/latest/user/BuildLocally.html#clone-and-install-dependencies

rovinski commented 2 months ago

Why not simply make a wrapper shell script that has all of the args you want to pass? For example if you want to pass to OpenROAD ARG1=1 ARG2=2 ARG3=3

Then just make wrapper.sh with:

./build_openroadh.sh --openroad-args "ARG1=1 ARG2=2 ARG3=3"
eszpotanski commented 2 months ago

Following the comment, changes were moved to OpenROAD and build_openroad.sh were adjusted to use Build.sh from OpenROAD

oharboe commented 2 months ago

@vvbandeira Review?

vvbandeira commented 2 months ago

@vvbandeira Review?

Changes are ok, but will need to wait for the OR PR to be merged so we can update the submodule.

vvbandeira commented 2 months ago

@eszpotanski please update the OR submodule. CI needs to be green to move forward.

eszpotanski commented 2 months ago

CI failed due to Jenkins error:

Cannot contact jenkins-worker-central1-fika87: hudson.remoting.ChannelClosedException: Channel "hudson.remoting.Channel@5efbd302:jenkins-worker-central1-fika87": Remote call on jenkins-worker-central1-fika87 failed. The channel is closing down or has closed down

Could not connect to jenkins-worker-central1-fika87 to send interrupt signal to process

@vvbandeira can you restart failed jobs?

oharboe commented 2 months ago

@eszpotanski You can merge with latest master to trigger a new build...

oharboe commented 2 months ago

@maliberty merge? unrelated failure in CI.