diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix b/nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix new file mode 100644 index 000000000000..19c021684b3f --- /dev/null +++ b/nixpkgs/pkgs/applications/science/logic/symbiyosys/default.nix @@ -0,0 +1,62 @@ +{ lib, stdenv, fetchFromGitHub +, bash, python3, yosys +, yices, boolector, z3, aiger +}: + +stdenv.mkDerivation { + pname = "symbiyosys"; + version = "2021.11.30"; + + src = fetchFromGitHub { + owner = "YosysHQ"; + repo = "SymbiYosys"; + rev = "b409b1179e36d2a3fff66c85b7d4e271769a2d9e"; + hash = "sha256-S7of2upntiMkSdh4kf1RsrjriS31Eh8iEcVvG36isQg="; + }; + + buildInputs = [ ]; + patchPhase = '' + patchShebangs . + + # Fix up Yosys imports + substituteInPlace sbysrc/sby.py \ + --replace "##yosys-sys-path##" \ + "sys.path += [p + \"/share/yosys/python3/\" for p in [\"$out\", \"${yosys}\"]]" + + # Fix various executable references + substituteInPlace sbysrc/sby_core.py \ + --replace '"/usr/bin/env", "bash"' '"${bash}/bin/bash"' \ + --replace ', "btormc"' ', "${boolector}/bin/btormc"' \ + --replace ', "aigbmc"' ', "${aiger}/bin/aigbmc"' + + substituteInPlace sbysrc/sby_core.py \ + --replace '##yosys-program-prefix##' '"${yosys}/bin/"' + + substituteInPlace sbysrc/sby.py \ + --replace '/usr/bin/env python3' '${python3}/bin/python' + ''; + + buildPhase = "true"; + + installPhase = '' + mkdir -p $out/bin $out/share/yosys/python3 + + cp sbysrc/sby_*.py $out/share/yosys/python3/ + cp sbysrc/sby.py $out/bin/sby + + chmod +x $out/bin/sby + ''; + + doCheck = false; # not all provers are yet packaged... + nativeCheckInputs = [ python3 yosys boolector yices z3 aiger ]; + checkPhase = "make test"; + + meta = { + description = "Tooling for Yosys-based verification flows"; + homepage = "https://symbiyosys.readthedocs.io/"; + license = lib.licenses.isc; + maintainers = with lib.maintainers; [ thoughtpolice emily ]; + mainProgram = "sby"; + platforms = lib.platforms.all; + }; +} |