about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/science/electronics/openroad/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/science/electronics/openroad/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/openroad/default.nix133
1 files changed, 133 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/science/electronics/openroad/default.nix b/nixpkgs/pkgs/applications/science/electronics/openroad/default.nix
new file mode 100644
index 000000000000..16659892a6ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/openroad/default.nix
@@ -0,0 +1,133 @@
+{ lib
+, mkDerivation
+, fetchFromGitHub
+, fetchpatch
+, bison
+, cmake
+, doxygen
+, flex
+, git
+, python3
+, swig4
+, boost179
+, cbc       # for clp
+, cimg
+, clp       # for or-tools
+, eigen
+, glpk
+, gtest
+, lcov
+, lemon-graph
+, libjpeg
+, or-tools
+, pcre
+, pkg-config
+, qtbase
+, re2       # for or-tools
+, readline
+, spdlog
+, tcl
+, tcllib
+, xorg
+, yosys
+, zlib
+}:
+
+mkDerivation rec {
+  pname = "openroad";
+  version = "unstable-2023-08-26";
+
+  src = fetchFromGitHub {
+    owner = "The-OpenROAD-Project";
+    repo = "OpenROAD";
+    rev = "6dba515c2aacd3fca58ef8135424884146efd95b";
+    fetchSubmodules = true;
+    hash = "sha256-LAj7X+Vq0+H3tIo5zgyUuIjQwTj+2DLL18/KMJ/kf4A=";
+  };
+
+  nativeBuildInputs = [
+    bison
+    cmake
+    doxygen
+    flex
+    git
+    pkg-config
+    swig4
+  ];
+
+  buildInputs = [
+    boost179
+    cbc
+    cimg
+    clp
+    eigen
+    glpk
+    lcov
+    lemon-graph
+    libjpeg
+    or-tools
+    pcre
+    python3
+    qtbase
+    re2
+    readline
+    spdlog
+    tcl
+    tcllib
+    yosys
+    xorg.libX11
+    zlib
+  ];
+
+  patches = [
+    # https://github.com/The-OpenROAD-Project/OpenROAD/pull/3911
+    (fetchpatch {
+      name = "openroad-fix-fmt-10.patch";
+      url = "https://github.com/The-OpenROAD-Project/OpenROAD/commit/9396f07f28e0260cd64acfc51909f6566b70e682.patch";
+      hash = "sha256-jy8K8pdhSswVz6V6otk8JAI7nndaFVMuKQ/4A3Kzwns=";
+    })
+    # Upstream is not aware of these failures
+    ./0001-Disable-failing-regression-tests.patch
+    # This is an issue we experience in the sandbox, and upstream
+    # probably wouldn't mind merging this change, but no PR was opened.
+    ./0002-Ignore-warning-on-stderr.patch
+  ];
+
+  postPatch = ''
+    patchShebangs --build etc/find_messages.py
+  '';
+
+  # Enable output images from the placer.
+  cmakeFlags = [
+    # Tries to download gtest 1.13 as part of the build. We currently rely on
+    # the regression tests so we can get by without building unit tests.
+    "-DENABLE_TESTS=OFF"
+    "-DUSE_SYSTEM_BOOST=ON"
+    "-DUSE_CIMG_LIB=ON"
+    "-DOPENROAD_VERSION=${src.rev}"
+  ];
+
+  # Resynthesis needs access to the Yosys binaries.
+  qtWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ yosys ]}" ];
+
+  # Upstream uses vendored package versions for some dependencies, so regression testing is prudent
+  # to see if there are any breaking changes in unstable that should be vendored as well.
+  doCheck = true;
+  checkPhase = ''
+    ../test/regression
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/openroad -version
+    $out/bin/sta -version
+  '';
+
+  meta = with lib; {
+    description = "OpenROAD's unified application implementing an RTL-to-GDS flow";
+    homepage = "https://theopenroadproject.org";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ trepetti ];
+    platforms = platforms.linux;
+  };
+}