mirror of
https://github.com/The-OpenROAD-Project/OpenLane.git
synced 2026-05-29 00:23:55 +08:00
~ 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
122 lines
2.4 KiB
Nix
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;
|
|
};
|
|
}
|