--- /dev/null
+{
+ "nodes": {
+ "c4m-jtag": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1619101523,
+ "narHash": "sha256-y1OY8URcE1lnu5L7IDFcJ8zT8sqlrfMP9VPNmVvACGk=",
+ "ref": "master",
+ "rev": "c2bf4810f9f91ced7fcda777b92b86ab353da288",
+ "revCount": 146,
+ "type": "git",
+ "url": "https://git.libre-soc.org/git/c4m-jtag.git"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.libre-soc.org/git/c4m-jtag.git"
+ }
+ },
+ "migen": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1631614362,
+ "narHash": "sha256-BgYf4e7O/rbS5P1ZpDlcgCEUh2h2vK3FyHADdzyaMg0=",
+ "owner": "m-labs",
+ "repo": "migen",
+ "rev": "7bc4eb1387b39159a74c1dbd1b820728e0bfbbaa",
+ "type": "github"
+ },
+ "original": {
+ "owner": "m-labs",
+ "repo": "migen",
+ "type": "github"
+ }
+ },
+ "nix-litex": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1632150297,
+ "narHash": "sha256-ghlAJBZxLVkQB+9tXEOBOF1FfdT5Pn4292khF4iKCNA=",
+ "ref": "main",
+ "rev": "5ab6984eb1efad0c91d808c9b7b79e00e50ccc05",
+ "revCount": 31,
+ "type": "git",
+ "url": "https://git.sr.ht/~lschuermann/nix-litex"
+ },
+ "original": {
+ "ref": "main",
+ "type": "git",
+ "url": "https://git.sr.ht/~lschuermann/nix-litex"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1631723418,
+ "narHash": "sha256-Sbey1S81fXUKcEHVCMwlXMju/IoCQxMwP1PPkVYpGrc=",
+ "owner": "L-as",
+ "repo": "nixpkgs",
+ "rev": "8bfc1026477692b933df6eeec27bd494cac3e436",
+ "type": "github"
+ },
+ "original": {
+ "owner": "L-as",
+ "ref": "libresoc",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nmigen": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1618220900,
+ "narHash": "sha256-Ol2SMZLUTikZWDLmK7F5lZuKBfGO71WmisATPNMTpHQ=",
+ "ref": "master",
+ "rev": "d824795c2c7cb43dcbc8ed8fac6d309d77284913",
+ "revCount": 1056,
+ "type": "git",
+ "url": "https://git.libre-soc.org/git/nmigen.git"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.libre-soc.org/git/nmigen.git"
+ }
+ },
+ "nmigen-soc": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1601572554,
+ "narHash": "sha256-v9SH+KuIPydXCr363RUsMg9/tabuu+GjKPJOKq2Jze0=",
+ "ref": "master",
+ "rev": "692017c7eaf21ff37302790c4422db6bd08667be",
+ "revCount": 48,
+ "type": "git",
+ "url": "https://git.libre-soc.org/git/nmigen-soc.git"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.libre-soc.org/git/nmigen-soc.git"
+ }
+ },
+ "root": {
+ "inputs": {
+ "c4m-jtag": "c4m-jtag",
+ "migen": "migen",
+ "nix-litex": "nix-litex",
+ "nixpkgs": "nixpkgs",
+ "nmigen": "nmigen",
+ "nmigen-soc": "nmigen-soc",
+ "yosys": "yosys"
+ }
+ },
+ "yosys": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1617979565,
+ "narHash": "sha256-M8ppe+lL/pgd2sXh7bM6/sbk1099KKECeWA5mXtqE6Y=",
+ "owner": "YosysHQ",
+ "repo": "yosys",
+ "rev": "a58571d0fe8971cb7d3a619a31b2c21be6d75bac",
+ "type": "github"
+ },
+ "original": {
+ "owner": "YosysHQ",
+ "repo": "yosys",
+ "rev": "a58571d0fe8971cb7d3a619a31b2c21be6d75bac",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
--- /dev/null
+# The license for this file is included in the `nix` directory next to this file.
+
+{
+ description = "FOSS CPU/GPU/VPU/SoC all in one, see https://libre-soc.org/";
+
+ inputs.nixpkgs.url = "github:L-as/nixpkgs?ref=libresoc"; # for alliance and migen
+ inputs.c4m-jtag.url = "git+https://git.libre-soc.org/git/c4m-jtag.git";
+ inputs.c4m-jtag.flake = false;
+ inputs.nmigen.url = "git+https://git.libre-soc.org/git/nmigen.git";
+ inputs.nmigen.flake = false;
+ inputs.nmigen-soc.url = "git+https://git.libre-soc.org/git/nmigen-soc.git";
+ inputs.nmigen-soc.flake = false;
+ inputs.migen.url = "github:m-labs/migen";
+ inputs.migen.flake = false;
+ inputs.yosys.url = "github:YosysHQ/yosys?rev=a58571d0fe8971cb7d3a619a31b2c21be6d75bac";
+ inputs.yosys.flake = false;
+ # submodules needed
+ inputs.nix-litex.url = "git+https://git.sr.ht/~lschuermann/nix-litex?ref=main";
+ inputs.nix-litex.flake = false;
+
+ outputs = { self, nixpkgs, c4m-jtag, nmigen, nmigen-soc, nix-litex, migen, yosys }:
+ let
+ getv = x: builtins.substring 0 8 x.lastModifiedDate;
+
+ supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
+
+ forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
+
+ litex = pkgs: import "${nix-litex}/pkgs" {
+ inherit pkgs;
+ pkgMetas = builtins.fromTOML (builtins.readFile ./nix/litex.toml);
+ skipChecks = true; # FIXME: remove once checks work
+ };
+
+ nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; overlays = [ self.overlay ]; });
+
+ lib = nixpkgs.lib;
+ in
+ {
+ overlay = final: prev: {
+ python37 = prev.python37.override {
+ packageOverrides = lib.composeExtensions (litex final).pythonOverlay (pfinal: pprev: {
+ libresoc-ieee754fpu = pfinal.callPackage ./nix/ieee754fpu.nix {};
+ libresoc-openpower-isa = pfinal.callPackage ./nix/openpower-isa.nix {};
+ c4m-jtag = pfinal.callPackage (import ./nix/c4m-jtag.nix { src = c4m-jtag; version = getv c4m-jtag; }) {};
+ bigfloat = pfinal.callPackage ./nix/bigfloat.nix {};
+ modgrammar = pfinal.callPackage ./nix/modgrammar.nix {};
+ libresoc-nmutil = pfinal.callPackage ./nix/nmutil.nix {};
+ libresoc-soc = pfinal.callPackage (import ./nix/soc.nix { version = getv self; }) {};
+
+ nmigen-soc = pprev.nmigen-soc.overrideAttrs (_: {
+ doCheck = false;
+ src = nmigen-soc;
+ setuptoolsCheckPhase = "true";
+ });
+
+ nmigen = pprev.nmigen.overrideAttrs (_: {
+ src = nmigen;
+ });
+
+ migen = pprev.migen.overrideAttrs (_: {
+ src = migen;
+ });
+ });
+ };
+
+ yosys = prev.yosys.overrideAttrs (_: {
+ version = "0.9+4052";
+ src = yosys;
+ });
+
+ libresoc-verilog = final.callPackage (import ./nix/verilog.nix { version = getv self; }) { python3Packages = final.python37Packages; };
+ libresoc-ls180 = final.callPackage (import ./nix/ls180.nix { version = getv self; }) { python3Packages = final.python37Packages; };
+ libresoc-ecp5 = final.callPackage (import ./nix/ecp5.nix { version = getv self; }) { python3Packages = final.python37Packages; };
+ libresoc-ecp5-program = final.callPackage (import ./nix/ecp5-program.nix { version = getv self; }) { python3Packages = final.python37Packages; };
+ libresoc-pinmux = final.callPackage (import ./nix/pinmux.nix { version = getv self; }) {};
+ };
+
+ apps = forAllSystems (system: {
+ ecp5 = {
+ type = "app";
+ program = "${nixpkgsFor.${system}.libresoc-ecp5-program}";
+ };
+ });
+ defaultApp = forAllSystems (system: self.apps.${system}.ecp5);
+
+ packages = forAllSystems (system: {
+ soc = nixpkgsFor.${system}.python37Packages.libresoc-soc;
+ verilog = nixpkgsFor.${system}.libresoc-verilog;
+ pinmux = nixpkgsFor.${system}.libresoc-pinmux;
+ ls180 = nixpkgsFor.${system}.libresoc-ls180;
+ ecp5 = nixpkgsFor.${system}.libresoc-ecp5;
+ ecp5-program = nixpkgsFor.${system}.libresoc-ecp5-program;
+ openpower-isa = nixpkgsFor.${system}.python37Packages.libresoc-openpower-isa;
+ debugNixpkgs = nixpkgsFor.${system};
+ });
+
+ defaultPackage = forAllSystems (system: self.packages.${system}.verilog);
+ };
+}
--- /dev/null
+{ lib, buildPythonPackage, fetchPypi, gmp, mpfr, six }:
+
+buildPythonPackage rec {
+ pname = "bigfloat";
+ version = "0.4.0";
+
+ buildInputs = [ gmp mpfr ];
+ propagatedBuildInputs = [ six ];
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "WLlr3ocqylmJ0T2C66Os8qoblOIhF91yoWulkRsMDLg=";
+ };
+
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = "https://pypi.org/project/bigfloat/";
+ license = licenses.lgpl3Plus;
+ };
+}
--- /dev/null
+{ version, src }:
+
+{ lib, python, buildPythonPackage, nmigen-soc, nmigen, modgrammar, setuptools-scm }:
+
+buildPythonPackage {
+ pname = "c4m-jtag";
+ inherit src version;
+
+ nativeBuildInputs = [ setuptools-scm ];
+ propagatedBuildInputs = [ nmigen-soc nmigen modgrammar ];
+
+ doCheck = false;
+
+ pythonImportsCheck = [ "c4m.nmigen.jtag.tap" ];
+
+ prePatch = ''
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${version}
+ '';
+
+ meta = with lib; {
+ homepage = "https://pypi.org/project/libresoc-openpower-isa/";
+ license = licenses.lgpl3Plus;
+ };
+}
--- /dev/null
+{ version }:
+
+{ writeShellScript, openocd, python3Packages, libresoc-ecp5, nextpnr, trellis }:
+
+let
+ pythonWithEnv = python3Packages.python.withPackages (ps: with ps; [
+ requests migen libresoc-soc litex-boards litex litedram liteeth liteiclink litescope litesdcard
+ ]);
+in
+writeShellScript "program-ecp5-libresoc" ''
+ export PATH="${openocd}/bin:${pythonWithEnv}/bin:${trellis}/bin:${nextpnr}/bin:$PATH"
+
+ dir="$(mktemp -d)"
+ pushd "$dir"
+ echo "$dir"
+
+ export PYTHONPATH="${../src/soc/litex/florent}:$PYTHONPATH"
+
+ python ${../src/soc/litex/florent/versa_ecp5.py} --sys-clk-freq=55e6 --load-from ${libresoc-ecp5}
+
+ popd
+ rm -rf "$dir"
+ exit 0
+''
--- /dev/null
+{ version }:
+
+{ stdenv, python3Packages, yosys, libresoc-verilog, libresoc-pinmux, pkgsCross
+, nextpnr, trellis }:
+
+stdenv.mkDerivation {
+ pname = "libresoc-versa-ecp5.v";
+ inherit version;
+
+ src = ../src/soc/litex/florent;
+
+ nativeBuildInputs =
+ (with python3Packages; [
+ python libresoc-soc litex-boards litex litedram liteeth liteiclink litescope litesdcard
+ ])
+ ++ [ trellis nextpnr pkgsCross.powernv.buildPackages.gcc ];
+
+ postPatch = ''
+ patchShebangs --build .
+ '';
+
+ configurePhase = "true";
+
+ buildPhase = ''
+ runHook preBuild
+ export PINMUX="$(mktemp -d)"
+ ln -s ${libresoc-pinmux} "$PINMUX/ls180"
+ cp ${libresoc-verilog} libresoc/libresoc.v
+ ./versa_ecp5.py --sys-clk-freq=55e6 --build
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ mv /build/florent/build/versa_ecp5/gateware/versa_ecp5.svf $out
+ runHook postInstall
+ '';
+
+ fixupPhase = "true";
+}
--- /dev/null
+{ lib, buildPythonPackage, libresoc-nmutil, bigfloat, fetchgit }:
+
+buildPythonPackage {
+ pname = "libresoc-ieee754fpu";
+ version = "unstable-2021-06-05";
+
+ src = fetchgit {
+ url = "https://git.libre-soc.org/git/ieee754fpu.git";
+ rev = "c62fa3a7ee95832587d7725729dcdb9a002ae015";
+ sha256 = "wbr1vGFzUlUtBT6IcRsykADYeksiVoq/LacU/dbRQ0o=";
+ };
+
+ propagatedBuildInputs = [ libresoc-nmutil bigfloat ];
+
+ doCheck = false;
+
+ prePatch = ''
+ touch ./src/ieee754/part/__init__.py
+ '';
+
+ pythonImportsCheck = [ "ieee754.part" ];
+
+ meta = with lib; {
+ homepage = "https://pypi.org/project/libresoc-ieee754fpu/";
+ license = licenses.lgpl3Plus;
+ };
+}
--- /dev/null
+[litex]
+github_user = "enjoy-digital"
+github_repo = "litex"
+git_revision = "42d8fc226a4f4e8dfef104257a95f98eb9b10da7"
+github_archive_nix_hash = "16zb7mci2a09jc5bbr4342pn95iyl84705n566alpx696xk2l0zr"
+
+[litex-boards]
+github_user = "litex-hub"
+github_repo = "litex-boards"
+git_revision = "1781be166aee867421e0d943f6a62c3397524563"
+github_archive_nix_hash = "0ar41ibs6si03iyhcjn3blw1rkdsazn5rsa95ph8v061kg2yjbjh"
+
+[liteeth]
+github_user = "enjoy-digital"
+github_repo = "liteeth"
+git_revision = "64b85e621e740b9b7a9bdb03749758c703fea6e1"
+github_archive_nix_hash = "1gbscl36n6mgaz1y1b27nzhykrhrccl6ls5vp7dd6divpqdf328i"
+
+[litedram]
+github_user = "enjoy-digital"
+github_repo = "litedram"
+git_revision = "ac825e51124e926c67455292cd2b949954fc6f65"
+github_archive_nix_hash = "1acs4kgbsv8pgml1q7709afh46f8mpy8b1nw0p9n8a1zih8ang1r"
+
+[litehyperbus]
+github_user = "litex-hub"
+github_repo = "litehyperbus"
+git_revision = "c4b64d2c992cedf3e03ffdf87f389feb5ddfff52"
+github_archive_nix_hash = "1iwjwzz4wa9zzm6yqa7rkag9igmsawp8wpmkj6fqia20b7xjglnb"
+
+[liteiclink]
+github_user = "enjoy-digital"
+github_repo = "liteiclink"
+git_revision = "efd200fa9e625144131a310fc09fd1fecf1682e6"
+github_archive_nix_hash = "0g643ryfzc6iq0p80rhq116n5w6mh4fv4yg4adyy5i1vy2grlg8s"
+
+[litepcie]
+github_user = "enjoy-digital"
+github_repo = "litepcie"
+git_revision = "0718fd135fc30e0a3598eaf66ce2fcb54b62193c"
+github_archive_nix_hash = "1m3i4hv49438ik4qhdp7rx9nan5rddrqp7nzvya9xfbh7lfc59hl"
+
+[litescope]
+github_user = "enjoy-digital"
+github_repo = "litescope"
+git_revision = "2739d5a069386c8e834c7f660dce9f93dc2b4598"
+github_archive_nix_hash = "08r7dzlmlfs9pmfz4xkf61sal5zy3caby88bcb4993c43nzpw8a3"
+
+[litesdcard]
+github_user = "enjoy-digital"
+github_repo = "litesdcard"
+git_revision = "edee2467fcabc62c4b34e3daa2271a71e52ba09f"
+github_archive_nix_hash = "0n5x9cx61xij0hc61slabxa05pzmw8i5fyg54ydmxi2fl2p5p0rs"
+
+[litespi]
+github_user = "litex-hub"
+github_repo = "litespi"
+git_revision = "c0730ebdb3c976618bf24e9ec04911e7c9934adf"
+github_archive_nix_hash = "015irjdpii514aj4av02pglvvq0wgxkplyy09435crzy9j5i5v04"
+
+[pythondata-misc-tapcfg]
+github_user = "litex-hub"
+github_repo = "pythondata-misc-tapcfg"
+git_revision = "25c97a4a9ff9af85248028fe01e2c65b2e3640ee"
+github_archive_nix_hash = "0zr6d5giqzsjmqpfyf1b25r0y70bj09xjbfinfxcdc6s8cwwwz71"
+
+[pythondata-software-compiler_rt]
+github_user = "litex-hub"
+github_repo = "pythondata-software-compiler_rt"
+git_revision = "7cfcaed2e726027fd622650b58dd77e47c495ee0"
+github_archive_nix_hash = "0b65dj95418j4pjqqkqjq5npnn1ih1789ba9575kxcljgj7r8xb7"
+
+[pythondata-cpu-serv]
+github_user = "litex-hub"
+github_repo = "pythondata-cpu-serv"
+git_revision = "915cdf793395ab48cc52c0225660eb6eeff41133"
+github_archive_nix_hash = "1ndkjhh7r521cc9g63pmjvgvv9sa3s8n2mkdli91nr7ns3q3lxmk"
+
+[litevideo]
+github_user = "enjoy-digital"
+github_repo = "litevideo"
+git_revision = "41f30143075ece3fff5c33a332ed067d1837cbb3"
+github_archive_nix_hash = "06vw4rn8xby8is13275bmkrxlwp3wlznbdqfay78a5m8bp73kypy"
+
+[valentyusb-hw_cdc_eptri]
+github_user = "litex-hub"
+github_repo = "valentyusb"
+git_revision = "a0526ad053c394306ad7a585a7ddd463831ad09d"
+github_archive_nix_hash = "0nad2x5j5rnjyciwm0abxhzng8nrv06ri8g9qdi39zk8n9zy7cmf"
--- /dev/null
+{ version }:
+
+{ stdenv, python3Packages, yosys, libresoc-verilog, libresoc-pinmux, pkgsCross }:
+
+stdenv.mkDerivation {
+ pname = "libresoc-ls1804k";
+ inherit version;
+
+ src = ../src/soc/litex/florent;
+
+ nativeBuildInputs =
+ (with python3Packages; [
+ python libresoc-soc litex litedram liteeth liteiclink litescope litesdcard
+ ])
+ ++ [ pkgsCross.powernv.buildPackages.gcc ];
+
+ postPatch = ''
+ patchShebangs --build .
+ '';
+
+ configurePhase = "true";
+
+ buildPhase = ''
+ runHook preBuild
+ export PINMUX="$(mktemp -d)"
+ ln -s ${libresoc-pinmux} "$PINMUX/ls180"
+ cp ${libresoc-verilog} libresoc/libresoc.v
+ ./ls180soc.py --build --platform=ls180sram4k --num-srams=2 --srams4k
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ mkdir $out
+ mv build/ls180sram4k/gateware/ls180sram4k.v $out/ls180.v
+ mv build/ls180sram4k/gateware/mem.init $out
+ mv build/ls180sram4k/gateware/mem_1.init $out
+ mv libresoc/libresoc.v $out
+ mv libresoc/SPBlock_512W64B8W.v $out
+ runHook postInstall
+ '';
+
+ fixupPhase = "true";
+}
--- /dev/null
+{ lib, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+ pname = "modgrammar";
+ version = "unstable-2020-09-20";
+
+ src = fetchFromGitHub {
+ owner = "bloerwald";
+ repo = "modgrammar";
+ rev = "d363ad5a86584e560a8b03cbe11c0168d7610691";
+ sha256 = "SO2qjfEVaJfgbA5HLJYwXlaeUzt5EFoljYQ2SsdDCbc=";
+ };
+
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = "https://pypi.org/project/modgrammar/";
+ # license = licenses.bsd; # FIXME: Which BSD?
+ };
+}
--- /dev/null
+{ lib, buildPythonPackage, bigfloat, fetchgit, pyvcd }:
+
+buildPythonPackage {
+ pname = "libresoc-nmutil";
+ version = "unstable-2021-08-24";
+
+ propagatedBuildInputs = [ pyvcd ];
+
+ src = fetchgit {
+ url = "https://git.libre-soc.org/git/nmutil.git";
+ rev = "efda080db6978d249a23003bec734f1cc07de329";
+ sha256 = "nTgUiZc4CC0VoUND29kHSIyMlP9IB3oZfehutoNK07w=";
+ };
+
+ doCheck = false;
+
+ meta = with lib; {
+ homepage = "https://pypi.org/project/libresoc-ieee754fpu/";
+ license = licenses.lgpl3Plus;
+ };
+}
--- /dev/null
+{ lib, python, buildPythonPackage, fetchgit, libresoc-nmutil, astor, nmigen, ply, pygdbmi }:
+
+buildPythonPackage {
+ pname = "libresoc-openpower-isa";
+ version = "unstable-2021-09-04";
+
+ src = fetchgit {
+ url = "https://git.libre-soc.org/git/openpower-isa.git";
+ rev = "6e43a194f3d07ed5a8daa297187a32746c4c4d3c";
+ sha256 = "0EekUouTQruTXGO5jlPJtqh0DOudghILy0nca5eaZz8=";
+ };
+
+ propagatedBuildInputs = [ libresoc-nmutil astor nmigen ply pygdbmi ];
+
+ doCheck = false;
+
+ prePatch = ''
+ touch ./src/openpower/sv/__init__.py # TODO: fix upstream
+ '';
+
+ postInstall = ''
+ cp -rT ./openpower $out/${python.sitePackages}/../openpower/
+ '';
+
+ pythonImportsCheck = [ "openpower.decoder.power_decoder2" "openpower" ];
+
+ meta = with lib; {
+ homepage = "https://pypi.org/project/libresoc-openpower-isa/";
+ license = licenses.lgpl3Plus;
+ };
+}
--- /dev/null
+{ version }:
+
+{ stdenv, python2 }:
+
+stdenv.mkDerivation {
+ pname = "libresoc-pinmux";
+ inherit version;
+
+ src = ../pinmux;
+
+ nativeBuildInputs = [ python2 ];
+
+ configurePhase = "true";
+
+ buildPhase = ''
+ runHook preBuild
+ python src/pinmux_generator.py -v -s ls180 -o ls180
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ mv ls180 $out
+ runHook postInstall
+ '';
+
+ fixupPhase = "true";
+}
--- /dev/null
+{ version }:
+
+{ lib, buildPythonPackage, yosys, runCommand, c4m-jtag, nmigen-soc
+, libresoc-ieee754fpu, libresoc-openpower-isa, python }:
+
+let
+ # If we use ../. as source, then any change to
+ # any unrelated Nix file would cause a rebuild,
+ # since the build would have access to it.
+ src = runCommand "libresoc-soc-source" {} ''
+ mkdir $out
+ cp -r ${../src} -T $out/src
+ cp -r ${../setup.py} -T $out/setup.py
+ cp -r ${../README.md} -T $out/README.md
+ cp -r ${../NEWS.txt} -T $out/NEWS.txt
+ '';
+in
+buildPythonPackage {
+ pname = "libresoc-soc";
+ inherit version src;
+
+ propagatedBuildInputs = [
+ c4m-jtag nmigen-soc python libresoc-ieee754fpu libresoc-openpower-isa yosys
+ ];
+
+ doCheck = false;
+
+ prePatch = ''
+ rm -r src/soc/litex
+ '';
+
+ pythonImportsCheck = [ "soc" ];
+
+ meta = with lib; {
+ homepage = "https://libre-soc.org/";
+ license = licenses.lgpl3Plus;
+ };
+}
--- /dev/null
+{ version }:
+
+{ runCommand, python3Packages, libresoc-pinmux }:
+
+let script = ''
+ mkdir pinmux
+ ln -s ${libresoc-pinmux} pinmux/ls180
+ export PINMUX="$(realpath ./pinmux)"
+ python3 -m soc.simple.issuer_verilog \
+ --debug=jtag --enable-core --enable-pll \
+ --enable-xics --enable-sram4x4kblock --disable-svp64 \
+ $out
+''; in
+runCommand "libresoc.v" {
+ inherit version;
+
+ nativeBuildInputs = (with python3Packages; [
+ libresoc-soc
+ ]) ++ [ libresoc-pinmux ];
+} script
pth = os.path.split(pth)[0]
# path is relative to this filename, in the pinmux submodule
- fname = "%s/../../../pinmux/%s/litex_pinpads.json" % (pth, chipname)
+ pinmux = os.getenv("PINMUX", "%s/../../../pinmux" % pth)
+ fname = "%s/%s/litex_pinpads.json" % (pinmux, chipname)
with open(fname) as f:
txt = f.read()
-Subproject commit 6efd2e59703f6f0747435f97030e8a463233457f
+Subproject commit b55917aafa6bbc9f16e1d97dc095e929c31aa81a