Files
OpenLane/default.nix
Mohamed Gaber 46d8e5a042 Upgrade to nix-eda (#2135)
~ Avoid using `/dev/null` for writing DEF files (it tries to create a temp file and fail)
~ PDK now has a default value of sky130A even outside the Makefile
~ PDK_ROOT now set automatically if Volare is installed
~ Upgrade to a newer version of OpenLane 2, which in turns uses `nix-eda` 
~ Format nix packages using Alejandra
~ OpenROAD scripts now read liberty files before database files (they are linked together when the database is read)
~ Update Readme to remove Colab and add banner directing people to OpenLane 2
2024-07-07 23:08:26 +03:00

122 lines
2.4 KiB
Nix

# Copyright 2024 Efabless Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
{
lib,
libparse,
stdenv,
python3,
makeWrapper,
ncurses,
coreutils-full,
gnugrep,
gnused,
gnutar,
gzip,
git,
bash,
klayout-pymod,
yosys,
opensta,
openroad,
klayout,
netgen,
magic-vlsi,
verilog,
verilator,
volare,
tclFull,
}: let
pyenv = python3.withPackages (ps:
with ps; [
libparse
click
pyyaml
XlsxWriter
klayout-pymod
volare
]);
pyenv-sitepackages = "${pyenv}/${pyenv.sitePackages}";
in
stdenv.mkDerivation rec {
name = "openlane1";
src = [
./flow.tcl
./scripts
./configuration
./dependencies
];
unpackPhase = ''
echo $src
for file in $src; do
BASENAME=$(python3 -c "import os; print('$file'.split('-', maxsplit=1)[1], end='$EMPTY')")
cp -r $file $PWD/$BASENAME
done
ls -lah
'';
passthru = {
pyenv = pyenv;
};
includedTools = [
yosys
opensta
openroad
klayout
netgen
magic-vlsi
verilog
verilator
tclFull
];
propagatedBuildInputs =
includedTools
++ [
pyenv
ncurses
coreutils-full
gnugrep
gnused
bash
gnutar
gzip
git
];
nativeBuildInputs = [makeWrapper];
installPhase = ''
mkdir -p $out/bin
cp -r * $out/bin
wrapProgram $out/bin/flow.tcl\
--set PATH ${lib.makeBinPath propagatedBuildInputs}\
--set PYTHONPATH ${pyenv-sitepackages}
'';
doCheck = true;
computed_PATH = lib.makeBinPath propagatedBuildInputs;
meta = with lib; {
description = "RTL-to-GDSII flow for application-specific integrated circuits (ASIC)s";
homepage = "https://efabless.com/openlane";
mainProgram = "flow.tcl";
license = licenses.asl20;
platforms = platforms.linux ++ platforms.darwin;
};
}