101 lines
2.0 KiB
Nix
101 lines
2.0 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
python3Packages,
|
|
fetchFromGitea,
|
|
runCommand,
|
|
lctime,
|
|
ngspice,
|
|
writableTmpDirAsHomeHook,
|
|
}:
|
|
|
|
python3Packages.buildPythonApplication rec {
|
|
pname = "lctime";
|
|
version = "0.0.26";
|
|
pyproject = true;
|
|
|
|
src = fetchFromGitea {
|
|
domain = "codeberg.org";
|
|
owner = "librecell";
|
|
repo = "lctime";
|
|
tag = version;
|
|
hash = "sha256-oNmeV8r1dtO2y27jAJnlx4mKGjhzL07ad2yBdOLwgF0=";
|
|
};
|
|
|
|
build-system = with python3Packages; [
|
|
setuptools
|
|
];
|
|
|
|
dependencies = with python3Packages; [
|
|
joblib
|
|
klayout
|
|
liberty-parser
|
|
matplotlib
|
|
networkx
|
|
numpy
|
|
pyspice
|
|
scipy
|
|
sympy
|
|
];
|
|
|
|
nativeCheckInputs = with python3Packages; [
|
|
pytestCheckHook
|
|
ngspice
|
|
];
|
|
|
|
enabledTestPaths = [
|
|
"src/lctime/*/*.py"
|
|
];
|
|
|
|
disabledTestPaths = [
|
|
# hangs indefinitely
|
|
"src/lctime/characterization/test_ngspice_subprocess.py::test_ngspice_interactive_simple"
|
|
"src/lctime/characterization/test_ngspice_subprocess.py::test_ngspice_subprocess_class"
|
|
]
|
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
|
# causes python to abort
|
|
"src/lctime/characterization/test_ngspice_subprocess.py::test_simple_simulation"
|
|
# broken pipe
|
|
"src/lctime/characterization/test_ngspice_subprocess.py::test_interactive_subprocess"
|
|
];
|
|
|
|
pythonImportsCheck = [
|
|
"lctime"
|
|
];
|
|
|
|
passthru = {
|
|
tests =
|
|
runCommand "lctime-tests"
|
|
{
|
|
nativeBuildInputs = [
|
|
lctime
|
|
ngspice
|
|
writableTmpDirAsHomeHook
|
|
];
|
|
}
|
|
''
|
|
cd "$HOME"
|
|
|
|
cp -R "${src}/tests/"* .
|
|
patchShebangs *.sh
|
|
|
|
mkdir -p $out
|
|
./run_tests.sh &> $out/result.log
|
|
'';
|
|
};
|
|
|
|
meta = {
|
|
description = "Characterization tool for CMOS digital standard-cells";
|
|
homepage = "https://codeberg.org/librecell/lctime";
|
|
license = with lib.licenses; [
|
|
agpl3Plus
|
|
asl20
|
|
cc-by-sa-40
|
|
cc0
|
|
];
|
|
maintainers = with lib.maintainers; [ eljamm ];
|
|
teams = with lib.teams; [ ngi ];
|
|
mainProgram = "lctime";
|
|
};
|
|
}
|