2017-10-16 09:34:04 +02:00
|
|
|
{ stdenv, fetchFromGitHub, fetchFromBitbucket
|
|
|
|
, pkgconfig, tcl, readline, libffi, python3, bison, flex
|
|
|
|
}:
|
2015-12-29 17:31:18 +01:00
|
|
|
|
2018-02-14 07:15:48 +01:00
|
|
|
with builtins;
|
|
|
|
|
2015-12-29 17:31:18 +01:00
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
name = "yosys-${version}";
|
2018-03-21 22:00:55 +01:00
|
|
|
version = "2018.03.21";
|
2015-12-29 17:31:18 +01:00
|
|
|
|
|
|
|
srcs = [
|
|
|
|
(fetchFromGitHub {
|
2018-02-04 18:59:19 +01:00
|
|
|
owner = "yosyshq";
|
2017-12-07 05:04:38 +01:00
|
|
|
repo = "yosys";
|
2018-03-21 22:00:55 +01:00
|
|
|
rev = "3f0070247590458c5ed28c5a7abfc3b9d1ec138b";
|
|
|
|
sha256 = "0rsnjk25asg7dkxcmim464rmxgvm7x7njmcp5nyl8y4iwn8i9p8v";
|
2017-12-07 05:04:38 +01:00
|
|
|
name = "yosys";
|
2015-12-29 17:31:18 +01:00
|
|
|
})
|
2018-02-14 07:15:48 +01:00
|
|
|
|
|
|
|
# NOTE: the version of abc used here is synchronized with
|
|
|
|
# the one in the yosys Makefile of the version above;
|
|
|
|
# keep them the same for quality purposes.
|
2015-12-29 17:31:18 +01:00
|
|
|
(fetchFromBitbucket {
|
2017-12-07 05:04:38 +01:00
|
|
|
owner = "alanmi";
|
|
|
|
repo = "abc";
|
2018-01-10 20:39:56 +01:00
|
|
|
rev = "6e3c24b3308a";
|
|
|
|
sha256 = "1i4wv0si4fb6dpv2yrpkp588mdlfrnx2s02q2fgra5apdm54c53w";
|
2017-12-07 05:04:38 +01:00
|
|
|
name = "yosys-abc";
|
2015-12-29 17:31:18 +01:00
|
|
|
})
|
|
|
|
];
|
|
|
|
sourceRoot = "yosys";
|
|
|
|
|
2017-10-16 09:34:04 +02:00
|
|
|
enableParallelBuilding = true;
|
2017-09-05 23:26:13 +02:00
|
|
|
nativeBuildInputs = [ pkgconfig ];
|
|
|
|
buildInputs = [ tcl readline libffi python3 bison flex ];
|
2018-02-14 07:15:48 +01:00
|
|
|
|
|
|
|
patchPhase = ''
|
2018-04-11 22:08:51 +02:00
|
|
|
substituteInPlace ../yosys-abc/Makefile \
|
|
|
|
--replace 'CC := gcc' ""
|
2018-02-14 07:15:48 +01:00
|
|
|
substituteInPlace ./Makefile \
|
2018-04-11 22:08:51 +02:00
|
|
|
--replace 'CXX = clang' "" \
|
|
|
|
--replace 'ABCMKARGS = CC="$(CXX)"' 'ABCMKARGS =' \
|
2018-02-14 07:15:48 +01:00
|
|
|
--replace 'echo UNKNOWN' 'echo ${substring 0 10 (elemAt srcs 0).rev}'
|
|
|
|
'';
|
|
|
|
|
2015-12-29 17:31:18 +01:00
|
|
|
preBuild = ''
|
2016-08-19 03:30:21 +02:00
|
|
|
chmod -R u+w ../yosys-abc
|
|
|
|
ln -s ../yosys-abc abc
|
2018-04-11 22:08:51 +02:00
|
|
|
make config-${if stdenv.cc.isClang or false then "clang" else "gcc"}
|
2015-12-29 17:31:18 +01:00
|
|
|
echo 'ABCREV := default' >> Makefile.conf
|
|
|
|
makeFlags="PREFIX=$out $makeFlags"
|
|
|
|
'';
|
|
|
|
|
|
|
|
meta = {
|
|
|
|
description = "Framework for RTL synthesis tools";
|
|
|
|
longDescription = ''
|
|
|
|
Yosys is a framework for RTL synthesis tools. It currently has
|
|
|
|
extensive Verilog-2005 support and provides a basic set of
|
|
|
|
synthesis algorithms for various application domains.
|
|
|
|
Yosys can be adapted to perform any synthesis job by combining
|
|
|
|
the existing passes (algorithms) using synthesis scripts and
|
|
|
|
adding additional passes as needed by extending the yosys C++
|
|
|
|
code base.
|
|
|
|
'';
|
2017-10-16 09:34:04 +02:00
|
|
|
homepage = http://www.clifford.at/yosys/;
|
|
|
|
license = stdenv.lib.licenses.isc;
|
|
|
|
maintainers = with stdenv.lib.maintainers; [ shell thoughtpolice ];
|
2018-04-11 22:08:51 +02:00
|
|
|
platforms = stdenv.lib.platforms.unix;
|
2015-12-29 17:31:18 +01:00
|
|
|
};
|
|
|
|
}
|