summaryrefslogtreecommitdiff
path: root/flake.nix
blob: 97a27f8429c3080a793294ad276c9c4416eebe04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{
  description = "Open pdks";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";

		# download.sh https://github.com/efabless/skywater-pdk-libs-sky130_fd_pr /build/open_pdks-1.0.470/sources/sky130_fd_pr
		efabless_skywater-pdk-libs-sky130_fd_pr = {
			url = "github:efabless/skywater-pdk-libs-sky130_fd_pr";
			flake = false;
		};
		# download.sh https://github.com/efabless/skywater-pdk-libs-sky130_fd_io ../sources/sky130_fd_io
		efabless_skywater-pdk-libs-sky130_fd_io = {
			url = "github:efabless/skywater-pdk-libs-sky130_fd_io";
			flake = false;
		};
		# download.sh https://github.com/efabless/skywater-pdk-libs-sky130_fd_sc_hd /build/open_pdks-1.0.470/sources/sky130_fd_sc_hd
		efabless_skywater-pdk-libs-sky130_fd_sc_hd = {
			url = "github:efabless/skywater-pdk-libs-sky130_fd_sc_hd";
			flake = false;
		};
		# download.sh https://github.com/PaulSchulz/sky130_pschulz_xx_hd ../sources/sky130_ml_xx_hd
		PaulSchulz_sky130_pschulz_xx_hd = {
			url = "github:PaulSchulz/sky130_pschulz_xx_hd";
			flake = false;
		};
		# download.sh https://github.com/StefanSchippers/xschem_sky130 ../sources/xschem_sky130
		StefanSchippers_xschem_sky130 = {
			url = "github:StefanSchippers/xschem_sky130";
			flake = false;
		};
		# download.sh https://github.com/efabless/sky130_klayout_pdk ../sources/klayout_sky130
		efabless_sky130_klayout_pdk = {
			url = "github:efabless/sky130_klayout_pdk";
			flake = false;
		};
		# download.sh https://github.com/efabless/mpw_precheck ../sources/precheck_sky130
		efabless_mpw_precheck = {
			url = "github:efabless/mpw_precheck";
			flake = false;
		};
		
  };

  outputs = { self, nixpkgs, efabless_skywater-pdk-libs-sky130_fd_pr, efabless_skywater-pdk-libs-sky130_fd_io, efabless_skywater-pdk-libs-sky130_fd_sc_hd, PaulSchulz_sky130_pschulz_xx_hd, StefanSchippers_xschem_sky130, efabless_sky130_klayout_pdk, efabless_mpw_precheck }: {

    packages.x86_64-linux.open_pdks =
		  let pkgs = import nixpkgs {
						system = "x86_64-linux";
					};
		  in pkgs.stdenv.mkDerivation rec {
				pname = "open_pdks";
				version = "1.0.470";
				src = pkgs.fetchurl {
					url = "http://opencircuitdesign.com/open_pdks/archive/open_pdks-${version}.tgz";
					sha256 = "sha256-Q8Tiy5569XWTpme9V234CrJjaJ3SpgaEDSdjkJOafHk=";
				};
				# nativeBuildInputs = [pkgs.breakpointHook];
				nativeBuildInputs = [ pkgs.python3 pkgs.magic-vlsi pkgs.git ];

				enableParallelBuildung = true;

				git_efabless_skywater_pdk_libs_sky130_fd_pr = efabless_skywater-pdk-libs-sky130_fd_pr;
				git_efabless_skywater_pdk_libs_sky130_fd_io = efabless_skywater-pdk-libs-sky130_fd_io;
				git_efabless_skywater_pdk_libs_sky130_fd_sc_hd = efabless_skywater-pdk-libs-sky130_fd_sc_hd;
				git_PaulSchulz_sky130_pschulz_xx_hd = PaulSchulz_sky130_pschulz_xx_hd;
				git_StefanSchippers_xschem_sky130 = StefanSchippers_xschem_sky130;
				git_efabless_sky130_klayout_pdk = efabless_sky130_klayout_pdk;
				git_efabless_mpw_precheck = efabless_mpw_precheck;

				configureFlags = [
					"--prefix=\${out}"
					"--datarootdir=\${out}"
					"--enable-sky130-pdk"
					"--enable-primitive-sky130"
					"--disable-sc-hs-sky130"
					"--disable-sc-ms-sky130"
					"--disable-sc-ls-sky130"
					"--disable-sc-lp-sky130"
					"--enable-sc-hd-sky130"
					"--disable-sc-hdll-sky130"
					"--disable-sc-hvl-sky130"
					"--disable-gf180mcu-pdk"
				];

				postPatch = ''
					patchShebangs scripts/*
					patchShebangs common/*
					patchShebangs sky130/custom/*
				'';
				patches = [
					./download.sh.patch
				];

			};

    packages.x86_64-linux.default = self.packages.x86_64-linux.open_pdks;

  };
}