Merge pull request #79007 from flokli/yosys-updates
yosys: use external abc and simplify derivation
This commit is contained in:
commit
24c739c512
@ -1,16 +1,20 @@
|
|||||||
{ fetchFromGitHub, stdenv, readline, cmake }:
|
{ fetchFromGitHub, stdenv, readline, cmake }:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
let
|
||||||
|
rev = "71f2b40320127561175ad60f6f2428f3438e5243";
|
||||||
|
in stdenv.mkDerivation {
|
||||||
pname = "abc-verifier";
|
pname = "abc-verifier";
|
||||||
version = "2018-07-08";
|
version = "2020-01-11";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
|
inherit rev;
|
||||||
owner = "berkeley-abc";
|
owner = "berkeley-abc";
|
||||||
repo = "abc";
|
repo = "abc";
|
||||||
rev = "24407e13db4b8ca16c3996049b2d33ec3722de39";
|
sha256 = "15sn146ajxql7l1h8rsag5lhn4spwvgjhwzqawfr78snzadw8by3";
|
||||||
sha256 = "1rckji7nk81n6v1yajz7daqwipxacv7zlafknvmbiwji30j47sq5";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
passthru.rev = rev;
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
buildInputs = [ readline ];
|
buildInputs = [ readline ];
|
||||||
|
|
||||||
|
@ -1,75 +1,65 @@
|
|||||||
{ stdenv, fetchFromGitHub
|
{ stdenv
|
||||||
, pkgconfig, bison, flex
|
, abc-verifier
|
||||||
, tcl, readline, libffi, python3
|
, bison
|
||||||
, protobuf, zlib
|
, fetchFromGitHub
|
||||||
|
, flex
|
||||||
|
, libffi
|
||||||
|
, pkgconfig
|
||||||
|
, protobuf
|
||||||
|
, python3
|
||||||
|
, readline
|
||||||
|
, tcl
|
||||||
, verilog
|
, verilog
|
||||||
|
, zlib
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with builtins;
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "yosys";
|
pname = "yosys";
|
||||||
version = "2019.10.18";
|
version = "2020.02.01";
|
||||||
|
|
||||||
srcs = [
|
src = fetchFromGitHub {
|
||||||
(fetchFromGitHub {
|
owner = "yosyshq";
|
||||||
owner = "yosyshq";
|
repo = "yosys";
|
||||||
repo = "yosys";
|
rev = "a1c840ca5d6e8b580e21ae48550570aa9665741a";
|
||||||
rev = "3c41599ee1f62e4d77ba630fa1a245ef3fe236fa";
|
sha256 = "1vna04dh6l68nifssgs3hxqwn4k529krmm4crj94a8wwhwra52mh";
|
||||||
sha256 = "0jg2g8v08ax1q6qlvn8c1h147m03adzrgf21043xwbh4c7s5k137";
|
name = "yosys";
|
||||||
name = "yosys";
|
};
|
||||||
})
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
(fetchFromGitHub {
|
|
||||||
owner = "berkeley-abc";
|
|
||||||
repo = "abc";
|
|
||||||
rev = "623b5e82513d076a19f864c01930ad1838498894";
|
|
||||||
sha256 = "1mrfqwsivflqdzc3531r6mzp33dfyl6dnqjdwfcq137arqh36m67";
|
|
||||||
name = "yosys-abc";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
sourceRoot = "yosys";
|
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
buildInputs = [ tcl readline libffi python3 bison flex protobuf zlib ];
|
buildInputs = [ tcl readline libffi python3 bison flex protobuf zlib ];
|
||||||
|
|
||||||
makeFlags = [ "ENABLE_PROTOBUF=1" ];
|
makeFlags = [ "ENABLE_PROTOBUF=1" "PREFIX=${placeholder "out"}"];
|
||||||
|
|
||||||
patchPhase = ''
|
patchPhase = ''
|
||||||
substituteInPlace ../yosys-abc/Makefile \
|
|
||||||
--replace 'CC := gcc' "" \
|
|
||||||
--replace 'CXX := g++' ""
|
|
||||||
substituteInPlace ./Makefile \
|
substituteInPlace ./Makefile \
|
||||||
--replace 'CXX = clang' "" \
|
--replace 'CXX = clang' "" \
|
||||||
--replace 'LD = clang++' 'LD = $(CXX)' \
|
--replace 'LD = clang++' 'LD = $(CXX)' \
|
||||||
--replace 'CXX = gcc' "" \
|
--replace 'CXX = gcc' "" \
|
||||||
--replace 'LD = gcc' 'LD = $(CXX)' \
|
--replace 'LD = gcc' 'LD = $(CXX)' \
|
||||||
--replace 'ABCMKARGS = CC="$(CXX)" CXX="$(CXX)"' 'ABCMKARGS =' \
|
--replace 'ABCMKARGS = CC="$(CXX)" CXX="$(CXX)"' 'ABCMKARGS =' \
|
||||||
--replace 'echo UNKNOWN' 'echo ${substring 0 10 (elemAt srcs 0).rev}'
|
--replace 'echo UNKNOWN' 'echo ${builtins.substring 0 10 src.rev}'
|
||||||
patchShebangs tests
|
patchShebangs tests
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = ''
|
preBuild = let
|
||||||
chmod -R u+w ../yosys-abc
|
shortAbcRev = builtins.substring 0 7 abc-verifier.rev;
|
||||||
ln -s ../yosys-abc abc
|
in ''
|
||||||
|
chmod -R u+w .
|
||||||
make config-${if stdenv.cc.isClang or false then "clang" else "gcc"}
|
make config-${if stdenv.cc.isClang or false then "clang" else "gcc"}
|
||||||
echo 'ABCREV := default' >> Makefile.conf
|
echo 'ABCEXTERNAL = ${abc-verifier}/bin/abc' >> Makefile.conf
|
||||||
makeFlags="PREFIX=$out $makeFlags"
|
|
||||||
|
|
||||||
# we have to do this ourselves for some reason...
|
# we have to do this ourselves for some reason...
|
||||||
(cd misc && ${protobuf}/bin/protoc --cpp_out ../backends/protobuf/ ./yosys.proto)
|
(cd misc && ${protobuf}/bin/protoc --cpp_out ../backends/protobuf/ ./yosys.proto)
|
||||||
|
|
||||||
|
if ! grep -q "ABCREV = ${shortAbcRev}" Makefile;then
|
||||||
|
echo "yosys isn't compatible with the provided abc (${shortAbcRev}), failing."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
checkInputs = [ verilog ];
|
checkInputs = [ verilog ];
|
||||||
# checkPhase defaults to VERBOSE=y, which gets passed down to abc,
|
|
||||||
# which then does $(VERBOSE)gcc, which then complains about not
|
|
||||||
# being able to find ygcc. Life is pain.
|
|
||||||
checkFlags = [ " " ];
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Framework for RTL synthesis tools";
|
description = "Framework for RTL synthesis tools";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user