development/yosys: Added (A framework for Verilog RTL synthesis)

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
William PC 2022-11-05 05:36:42 +00:00 committed by Willy Sudiarto Raharjo
parent a1d641657f
commit 66f5af0cd3
No known key found for this signature in database
GPG Key ID: 3F617144D7238786
4 changed files with 211 additions and 0 deletions

22
development/yosys/README Normal file
View File

@ -0,0 +1,22 @@
Yosys is a framework for Verilog RTL synthesis. 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.
Yosys is free software licensed under the ISC license (a GPL
compatible license that is similar in terms to the MIT license or
the 2-clause BSD license).
By default it compiles using gcc if you want to use clang set
the environment variable CLANG=yes.
If you want to enable GHDL set GHDL=yes, this requires the GHDL
package.
For enabling protobuf install protobuf3 and set PROTOBUF=yes.
For building the python wrappers set PYTHON=yes.
If you want to enable ABC for synthesis and verification of
binary sequential logic circuits set ABCEXTERNAL=yes, this
requires berkeley-abc package.

View File

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
yosys: yosys (A framework for Verilog RTL synthesis)
yosys:
yosys:
yosys:
yosys: Yosys is a framework for Verilog RTL synthesis. It currently has
yosys: extensive Verilog-2005 support and provides a basic set of synthesis
yosys: algorithms for various application domains.
yosys:
yosys:
yosys:
yosys:

View File

@ -0,0 +1,160 @@
#!/bin/bash
# Slackware build script for yosys
# Copyright 2022 William PC - Seattle, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=yosys
VERSION=${VERSION:-0.22}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf yosys-$PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd yosys-$PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
if [ "${CLANG:-no}" == "yes" ]; then
echo "CONFIG := clang" > Makefile.conf
else
echo "CONFIG := gcc" > Makefile.conf
fi
# disable ABC because uses git clone
echo "ENABLE_ABC := 0" >> Makefile.conf
if [ "${GHDL:-no}" == "yes" ]; then
echo "ENABLE_GHDL := 1" >> Makefile.conf
# fix lib path at 64-bit to find ghdl libs
sed -i 's#(GHDL_PREFIX)/lib#&'${LIBDIRSUFFIX}'#' Makefile
fi
# enable yosys shared library
# make libyosys.so, can manually build the
# lib but will not work with the installation rule for make
echo "ENABLE_LIBYOSYS := 1" >> Makefile.conf
if [ "${PROTOBUF:-no}" == "yes" ]; then
echo "ENABLE_PROTOBUF := 1" >> Makefile.conf
fi
if [ "${PYTHON:-no}" == "yes" ]; then
echo "ENABLE_PYOSYS := 1" >> Makefile.conf
fi
if [ "${ABCEXTERNAL:-no}" == "yes" ]; then
echo "ENABLE_ABC := 1" >> Makefile.conf
echo "ABCEXTERNAL := abc" >> Makefile.conf
fi
# fix lib installation directory
sed -i 's#$(PREFIX)/lib#$(PREFIX)/lib'${LIBDIRSUFFIX}'#' Makefile
# set prefix, otherwise has to be set twice
# make PREFIX=/usr for correctly find dependent libs/include (i.e for GHDL)
# make install PREFIX=/usr for installing at prefix /usr
echo "PREFIX := /usr" >> Makefile.conf
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
make
# not working, keep it for later
# appnotes, requires IEEEtrans.cls
# presentation, requries dot
# manual requires luximono.sty
#if [ "${MANUAL-no}" == "yes" ]; then
# make manual
#fi
make install DESTDIR=$PKG
# installing examples
mkdir -p $PKG/usr/share/$PRGNAM-$VERSION
cp -a examples $PKG/usr/share/$PRGNAM-$VERSION
# Don't ship .la files:
rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
CHANGELOG CODEOWNERS COPYING Dockerfile README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE

View File

@ -0,0 +1,10 @@
PRGNAM="yosys"
VERSION="0.22"
HOMEPAGE="https://yosyshq.net/yosys"
DOWNLOAD="https://github.com/YosysHQ/yosys/archive/refs/tags/yosys-0.22.tar.gz"
MD5SUM="6c5ce0aa586019ec88ebfdae122157aa"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="William PC"
EMAIL="w_calandrini[at]hotmail[dot]com"